django - 无法从 django 模型上传和查看图像
问题描述
我正在尝试在我的模型上上传图像,然后在模板上显示它。
表格.py:
class ClanakForma(forms.ModelForm):
class Meta:
model = Clanak
fields = '__all__'
模型.py:
class Clanak(models.Model):
naslov = models.CharField(null=False, blank=True, max_length=120)
datumObjave = models.DateField(null=False, blank=False)
autor = models.ForeignKey(Autor, on_delete=models.CASCADE, null=True)
videofile= models.FileField(upload_to='images/', null=True, verbose_name="")
def __str__(self):
return str(self.naslov) + ', ' + str(self.datumObjave) + ', ' + str(self.autor) + ', ' + str(self.videofile)
视图.py
def dodajClanak(request):
if request.method == 'GET':
forma = ClanakForma()
elif request.method == 'POST':
forma = ClanakForma(request.POST)
if forma.is_valid():
data = Clanak()
data.naslov = forma.cleaned_data['naslov']
data.datumObjave = forma.cleaned_data['datumObjave']
data.autor = forma.cleaned_data['autor']
data.videofile = forma.cleaned_data['videofile']
#data.email = forma.cleaned_data['email']
data.save()
return redirect('readAllNew')
return render(request, 'justadded.html', {'forma':forma})
def readAllNew(request):
data = list(Clanak.objects.all())
return render(request, 'readAllNew.html', {'data':data})
网址.py:
urlpatterns = [
path('dodajClanak/',views.dodajClanak, name='dodajClanak'),
path('readAllNew/',views.readAllNew, name='readAllNew'),
] + static(settings.MEDIA_URL, document_root= settings.MEDIA_ROOT)
刚刚添加的.html:
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<form action="{% url 'dodajClanak' %}" method="post">
{% csrf_token %}
<table border="1">
{{forma.as_table}}
</table>
<input type="submit" name="">
</form>
</body>
</html>
readAllNew.html
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<table border="1">
<tr>
<th>Naslov</th>
<th>Datum</th>
<th>Autor</th>
<th>Slika</th>
</tr>
{% for x in data %}
<tr>
<td>{{x.naslov}}</td>
<td>{{x.datumObjave}}</td>
<td>{{x.autor}}</td>
<td><img src='{{ MEDIA_URL }}{{ imagefile }}'></td>
<td><a href="{% url 'delete' x.id %}">delete</a></td>
<td><a href="{% url 'edit' x.id %}">edit</a></td>
</tr>
{% endfor %}
</table>
</body>
</html>
我的问题是当我去http://127.0.0.1:8000/dodajClanak/并尝试上传图片时出现错误:
在英文上它说:“你没有选择任何图像”。
当我打开链接http://127.0.0.1:8000/readAllNew/时,我看不到任何图像:
我可以通过管理站点上传它,但仍然看不到它。
解决方案
将表格更改为
<form action="{% url 'dodajClanak' %}" method="post" enctype=multipart/form-data>
并从这里查看
forma = ClanakForma(request.POST)
if forma.is_valid():
data = Clanak()
data.naslov = forma.cleaned_data['naslov']
data.datumObjave = forma.cleaned_data['datumObjave']
data.autor = forma.cleaned_data['autor']
data.videofile = forma.cleaned_data['videofile']
#data.email = forma.cleaned_data['email']
data.save()
return redirect('readAllNew')
到
forma = ClanakForma(request.POST,request.FILES)
if forma.is_valid():
forma.save()
return redirect('readAllNew')
当您使用ModelForm
时,无需编写所有这些行
推荐阅读
- dictionary - UWP MapBillboard:缩放导致褪色和不可见
- android - 在android中的LinearLayout之间进行分隔的最佳方法是什么?
- c# - 在wpf C#中单击按钮时如何禁用其他功能
- c# - 使用 LINQ 展平树以获得最深的价值
- gradle - 使用多个模块将快照发布到 oss.jfrog.org 失败并显示 403
- c# - 如何打开 IObservable
> 进入 IObservable ? - reactjs - 使用 let 重新分配 React Components 属性值
- jupyter-notebook - Jupyter Object_Detection_Tutorial 的问题 - 导入 win32api 时 DLL 加载失败
- javascript - 自动关闭“fs.createWriteStream()”以避免潜在的内存泄漏
- graphql - 在 AWS AppSync 中为 SQL 查询字符串化 JSON 对象