django 上传图片 有时候出现叉叉的情况

 

这个是项目settings里边的设置

 

 

STATIC_URL = '/static/'
STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static').replace('\\', '/'),)  


MEDIA_ROOT = os.path.join(BASE_DIR,'polls').replace('\\','/')
MEDIA_URL='/polls/'


然后是model里边的代码,主要定义了ImageField

 

from django.db import models
class Yangyang(models.Model):
    
    record_date = models.DateTimeField("time")
    record_img = models.ImageField(upload_to='img',null=True,blank=True)
    recorder= models.CharField(max_length=200)
    
    def __unicode__(self):
        return self.recorder

 

 

然后是view,主要是detail的。

from django.shortcuts import render,render_to_response
from django.http import HttpResponse

from .models import Yangyang


# Create your views here.
def index(request):
    latest_question_list = Yangyang.objects.all()
    context = {'latest_question_list': latest_question_list}
    return render(request, 'polls/index.html', context)
def detail(request, question_id):
    try:
        question = Yangyang.objects.get(pk=question_id)
    except Yangyang.DoesNotExist:
        raise Http404("Question does not exist")
    return render_to_response( 'polls/detail.html', {'question': question})


好吧,detail的代码是相当简单的

 

<img src="{{question.record_img.url}}">



polls 的url配置

 

<p>from django.conf.urls import url,patterns
from django.conf import settings
from django.conf.urls.static import static</p><p>from . import views</p><p>urlpatterns = [
    # ex: /polls/
    url(r'^$', views.index, name='index'),
    # ex: /polls/5/
    url(r'^(?P<question_id>[0-9]+)/$', views.detail, name='detail'),    
    # ex: /polls/5/results/
    #url(r'^(?P<question_id>[0-9]+)/results/$', views.results, name='results'),
    # ex: /polls/5/vote/
    #url(r'^(?P<question_id>[0-9]+)/vote/$', views.vote, name='vote'),</p><p>]</p><p>urlpatterns += static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)</p>  


开始以为这样就行了,但是每次方位都是图片无法现实的图标,路径看上去也没问题

 

后来发现最后一句的位置不对。

 

要放到网站下边的urls

from django.conf.urls import include, url
from django.contrib import admin
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    url(r'^polls/', include('polls.urls', namespace="polls")),
    url(r'^admin/', include(admin.site.urls)),
]

urlpatterns += static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)


 

最后直接访问:

http://127.0.0.1:8000/polls/4/ 就可以了

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Django上传图片需要按照以下步骤进行: 1. 在模型中定义一个 ImageField 字段来保存图片。 2. 在表单中添加一个 FileField 以允许用户上传图片。 3. 在视图函数中处理表单提交的数据。 4. 在 HTML 模板中添加一个 `<form>` 元素并包含一个文件输入元素,以便用户可以选择要上传的图片。 5. 使用 Django 的 `ModelForm` 类来自动生成表单。 示例代码如下: ``` # models.py from django.db import models class Article(models.Model): title = models.CharField(max_length=200) content = models.TextField() image = models.ImageField(upload_to='images/') # forms.py from django import forms from .models import Article class ArticleForm(forms.ModelForm): class Meta: model = Article fields = ['title', 'content', 'image'] # views.py from django.shortcuts import render, redirect from .forms import ArticleForm def create(request): if request.method == 'POST': form = ArticleForm(request.POST, request.FILES) if form.is_valid(): form.save() return redirect('articles:index') else: form = ArticleForm() return render(request, 'articles/create.html', {'form': form}) # create.html <form method="post" enctype="multipart/form-data"> {% csrf_token %} {{ form.as_p }} <button type="submit" class="btn btn-primary">Create</button> </form> ``` 在这个例子中,我们定义了一个名为 `Article` 的模型,其中包含一个名为 `image` 的 `ImageField`。然后我们创建了一个名为 `ArticleForm` 的表单,该表单包含标题、内容和图像字段。在视图函数 `create()` 中,我
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值