python - 无法相应提交 Django 表单
问题描述
视图.py
@login_required(login_url='login/')
def add_country(request):
if request.method == 'POST':
form = CountryForm(request.POST,request.FILES)
if form.is_valid():
new_form = form.save(commit=False)
new_form.edited_by = request.user
new_form.save()
return redirect('country_details')
else:
form = CountryForm()
context = {'form':form}
return render(request,'add_country.html',context)
模型.py
class Countries(models.Model):
CONTINENTS = [
('Asia','Asia'),
('Europe','Europe'),
('Africa','Africa'),
('Oceania','Oceania'),
('North America','North America'),
('South America','South America'),
]
name = models.CharField(max_length=75)
continent = models.CharField(max_length=50,choices=CONTINENTS,null=True)
landmark = models.CharField(max_length=100,null=True)
food = models.CharField(max_length=100,null=True)
entertainment = models.CharField(max_length=100,null=True)
flag = models.FileField(upload_to='flags', default='default.png',null=True)
image = models.FileField(upload_to='travel', default='default.png',null=True)
edited_by = models.OneToOneField(User,on_delete=models.CASCADE,null=True)
last_updated = models.DateTimeField(auto_now_add=True,null=True)
def __str__(self):
return self.name
add_country.html
<form method="POST" action="" enctype="multipart/form-data">
{% csrf_token %}
{{ form.name.label }}<br>
{{ form.name }}<br><br>
{{ form.landmark.label }}<br>
{{ form.landmark }}<br><br>
{{ form.food.label }}<br>
{{ form.food }}<br><br>
{{ form.entertainment.label }}<br>
{{ form.entertainment }}<br><br>
{{ form.flag.label }}<br>
{{ form.flag }}<br><br>
{{ form.image.label }}<br>
{{ form.image }}<br><br>
<input type="submit" class="btn btn-primary" value="Add">
</form>
我有一个问题,在我添加edited_by
将当前登录的用户分配到该列之后,表单无法提交,只能停留在同一页面上,而不是重定向到我想要的页面。我尝试了不同的方法来提交表单,例如 putrequest.method == "POST"
并且页面不起作用。然而,在我添加edited_by
到模型中之前,可以相应地提交表单并更新数据。请问edited_by
用户添加帖子后将用户分配到列中的方法是什么?
解决方案
我认为您在表单中也包含edited_by
了字段。如果您在视图中自己处理此字段,请从表单中删除此字段。
class CountryForm(forms.ModelForm):
class Meta:
model = Country
exclude = ['edited_by'] # or specify only required fields in form
现在您的视图将正常工作。
注意:您可以{{form.errors}}
在模板中显示表单的错误。
推荐阅读
- cookies - 有谁知道如何使用 __RequestVerificationToken 向应用程序发送 API 调用?(错误:cookie 和表单域被交换)
- python - 传单地图中的多边形叠加
- amazon-s3 - S3 Boto3 Stubber 没有下载文件的映射?
- apache-kafka - 如何使用 Kafka Streams 将消息拆分为慢速和快速轨道
- html - 为什么使用VBA将数据从html表格写入excel表格时速度很慢?
- rabbitmq - Service Fabric 中的可靠并发队列
- php - 多张图片上传不起作用 Laravel
- qml - QML 语法是 LALR(1) 吗?
- python - 如何使用opencv python在两个变量中获取图像中两条单独线的RGB值
- css - 在材质 ui 卡中禁用填充