python - django中的图片上传问题
问题描述
我已经上传了图片,但它没有显示在页面中。上传的图像也没有显示在媒体文件夹中。使用 django 表单上传图片。看看我的代码片段:
我的models.py
:
class Post(models.Model):
author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
title = models.CharField(max_length=200)
text = models.TextField()
published_date = models.DateTimeField(blank=True, null=True)
blog_img = models.ImageField(upload_to='images/',null=True, blank=True)
@property
def img(self):
if self.blog_img and hasattr(self.blog_img, 'url'):
return self.blog_img.url
else:
return "#"
我的views.py
:
def post_new(request):
if request.method =="POST":
form = PostForm(request.POST , request.FILES)
if form.is_valid():
post = form.save(commit=False)
post.author= request.user
post.save()
return redirect('post_detail',pk=post.pk)
else:
form=PostForm()
return render(request, 'blog/post_edit.html',{'form':form})
def post_edit(request, pk):
post = get_object_or_404(Post, pk=pk)
if request.method == "POST":
form = PostForm(request.POST, request.FILES, instance=post)
if form.is_valid():
post = form.save(commit=False)
post.author = request.user
post.save()
return redirect('post_detail', pk=post.pk)
else:
form = PostForm(instance=post)
return render(request, 'blog/post_edit.html', {'form': form})
我在settings.py中添加了这个:
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
我的 post_list.html:
{% extends 'blog/base.html' %}
{% block content %}
<div class="h2">
<h2>Recent Posts</h2>
</div>
{% for post in posts %}
<div class="">
<div class="post">
<h2><a href="{% url 'post_detail' pk=post.pk %}">{{ post.title }}</a></h2>
<a href="{% url 'post_detail' pk=post.pk %}">Comments: {{ post.approved_comments.count }}</a>
<img src=" {{ post.img }} " width="200px" alt="images">
<p>{{ post.text|linebreaksbr }}</p>
<div class="date">
<p>published: {{ post.published_date }}</p>
</div>
</div>
</div>
{% endfor %}
{% endblock %}
此处使用了用于从用户 django 表单获取输入的表单模板。
post_edit.html
{% extends 'blog/base.html' %}
{%block content%}
<h2>New post</h2>
<form method="POST" class="post-form">{% csrf_token %}
{{ form.as_p }}
<button type="submit" class="save btn btn-default">Save</button>
</form>
{%endblock%}
解决方案
推荐阅读
- python - 如何将 if 语句用于字典键并填充另一个字典?
- javascript - 如何写出 arr 中的每个值,这是一个字符串数组,每行一个项目
- c++ - 如何使用 CMake 创建包
- python - 如何以有效的方式将列数据添加为行?
- apache-kafka - 尝试使用可为空键模式发布记录时,Kafka REST 代理中的异常“正在注册的模式与早期模式不兼容”
- python-3.x - 我在 Python 上使用 Speech_recognition 包得到 [errno -9999] 意外主机错误
- angular - 如何发送大量请求,但要处理第一个请求的结果,然后使用 angular 和 Observables 发送第二个请求
- javascript - Javascript 表单清理
- react-native - Redux 操作中的异步存储
- c# - 骑自行车者检测球员