Using django upload images and display

Django展示图片

上传图片参考前两个,现在只考虑将图片返回到前端展示(同样只是用django,因为ajax等掌握不熟练XD,过几天一定要拿js重新完成一次这些功能!)
这个算是前两个(upload-files-by-django part1pload-files-by-django part2)的延申,代码已经上传至github,这里只记录一下遇到的问题。

little-test-main

Q1. 在forms.py文件和models.py文件的CharField字段没有设置
问题原因:在forms.py文件和models.py文件的CharField字段没有设置必要参数max_length
解决方法:补充上即可。

Q2. 命名空间的关键词设置错误
问题原因:在app display中的urls.py文件中命名空间的关键词设置错误,将app_name记成了namespace。同时在前端页面index.html中使用了命名空间。

问题来源
问题来源
解决方法:正确关键字`app_name='display'`

Q3. 缺少{%csrf_token%}
问题原因:没有在form表单中添加{%csrf_token%}
解决方法:补上即可。

Q4. views.py中方法定义错误,返回的不是文件名而是数据库中的文件对象
问题原因:views.py中方法定义错误,返回的不是文件名而是数据库中的文件对象
解决方法:

view.py修改之后

from re import U
from django.shortcuts import render
from .models import UploadImages
from .forms import ImageIdentify

def upload(request):
   tmpimg = ImageIdentify(request.POST,request.FILES)
   if tmpimg.is_valid():
       imgname = request.FILES['image'].name
       image = >UploadImages(imagename=imgname,images=request.FILES['image'])
       image.save()
def display():
   content = UploadImages.objects.all()
   namelist = []
   for con in content:
       temp=con.get_img_name()
       namelist.append(temp)
   if namelist == []:
       return []
   else:
       return namelist

def index(request):
   if request.method == 'POST':
       upload(request)
   content = display()
   print(content)
   return render(request,'index.html',{'content':content})

最后

原测试项目已经上传至githun仓库(little-test-main),并且在我的硬盘上进行了备份~
总体这个感觉已经是非常熟练~ 不愧于弄了那么久,同时算是对django的熟悉程度更深了一层。