【发布时间】:2021-10-04 15:51:06
【问题描述】:
按照 Django 教程,我编写了以下 html 文件,该文件采用用户填写的表单并将其作为对象添加到数据库中(表单是类的一堆属性)
{% block content %}
<form>
<form method="POST"> {% csrf_token %}
{{ form.as_p }}
<input type='submit' value = 'save' />
</form>
{% endblock %}
它没有将表单保存到数据库中,而是在 url 中添加了一个奇怪的字符串(粘贴在下面)。
这发生在教程中的那个人身上,但在他添加了<form method="POST"> {% csrf_token %} 后它被修复了
这是什么“错误”,我该如何处理?还有,如果以后发生了怎么办?
没有真正的错误,服务器运行良好,因此没有要显示的回溯/错误消息。我确保form.as_p 是一个真实变量,并且与教程相关的变量或标签中没有拼写错误。我能想到的唯一问题是版本的变化——教程在 Django 2.0.7 中,我在 3.2.5 中,但根据我在文档中看到的内容,csrf_token 仍然有效。
添加到下面的网址。如果只是表单的值(asd,asd,1),我知道结尾,但是其余的是什么,我该怎么做才能解决它?
?csrfmiddlewaretoken=KWR2kXFqa3k1ETQsuyhKmHN6cJvZfj72KHkw1v4aGYTdThW9S7zWylCFJpNjhVDB&title=asd&description=asd&price=1
谢谢!
编辑:
forms.py:
from django import forms
from .models import product
class ProductForm(forms.ModelForm):
class Meta:
model = product
fields = ['title','description','price']
views.py:
def product_create_view(request):
form = ProductForm(request.POST or None)
if form.is_valid():
form.save()
context = {
'form': form
}
return render (request, 'product/product_create.html', context)
另外:从代码中删除了{% csrf_token %},它仍然没有工作。它只是将表单输入放在 url 中并没有保存它。
【问题讨论】:
-
请提供
forms.py和views.py的代码。 -
csrf afaik 永远不会放在 URL 中。也许您正在查看表单数据?
标签: python html django api-design