尝试了多种办法无果,最后解决了,处理办法是修改models.py,原来的model:
class TechnicistLocation(models.Model): # 技术人员位置 area = models.CharField('位置名称', max_length=20 class Meta: verbose_name_plural = '技术人员位置' app_label ="schedule" def __unicode__(self): return self.area修改后的model:
class TechnicistLocation(models.Model): # 技术人员位置 area = models.CharField('位置名称', max_length=20) class Meta: verbose_name_plural = '技术人员位置' app_label ="schedule" def __str__(self): return self.area在表单处添加{% csrf_token %}
后台代码:
# 上传新房源,@csrf_exempt 注解来标识一个视图可以被跨域访问 @csrf_exempt def my_new_house(request): if request.method == 'GET': return render(request, 'newhouse.html', data) if request.method == 'POST': #获取上传的图片信息,此处的index_img_url只是一个变量名称,和model中的变量名没有关系!!! #get到的house_image也是我们获取到图片后取得名字,该名字需要和web前端变量名称保持一致 index_img_url = request.FILES.get('house_image') #将获取到的图片信息插入到数据库中 house = House.objects.create( index_img_url=index_img_url ) return JsonResponse(data)前端代码:
<form id="form-house-image" action="/app/addnewhouse/" method="post" enctype="multipart/form-data"> #为在用户提交表单的时候防止跨站攻击,在form表单处都应该添加{% csrf_token %} {% csrf_token %} <input type="hidden" name="house_id" id="house-id" value=""> <li> <div class="house-title"> <h3>添加图片</h3> </div> <div class="house-content"> <div class="house-image-cons"> </div> <div class="form-group"> <label for="house-image">选择图片</label> #request.FILES.get('house_image')中的变量名称house_image #就是我们前端上传图片后定义的定义的name #此处的name和id应该保持一致 <input type="file" name="house_image" id="house-image"> </div> <input type="submit" class="btn btn-success" value="上传"> </div> </li> </form>// 双斜杠 注释 和取消注释都是ctrl+/ /* 注释内容 */ 注释:ctrl+shift+/ 取消注释:ctrl+shift+\