我正在学习Django并努力学习它 . 我不明白为什么人们会在网址中附加两次 . 这有点让人困惑 . 我希望有人可以帮助我理解我哪里出错了 . 请求网址:http://devops:8000/cms/person/person这是我的代码:
forms.py:
class PersonView(ModelForm):
class Meta:
model = Person
fields = ['FirstName','LastName','Address']
urls.py:
urlpatterns = patterns('cms',
url(r'^workflowdetail/(?P<id>\d+)$', 'views.person',name='cms'),
)
views.py:
def person(request, id):
person= get_object_or_404(Person, pk=id)
if request.method == 'GET':
form = Person(instance=person)
else:
form = Person(request.POST,instance=person)
if form.is_valid():
form.save()
return render(request, 'person.html', {'form': form, 'id': id})
person.html
<form action="person" role="form" method="post">
{% bootstrap_form form %}
</form>
1 回答
您表单中的
action
不正确 . 当您使用person
时,这并不意味着它将使用person
视图,这意味着该表单将提交给相对URLperson
.您可以使用
url
标记来获取正确的网址:现在我将尝试解释url中的双
person/person
来自哪里:如果你从
/cms/person/
开始,则相对urlperson
是/cms/person/person/
. 如果从/cms/person/1
开始,那么相对urlperson
也是/cms/person/person/
. 由于您没有此网址模式,因此会出现404错误 .但是,如果从
/cms/person/1/
开始,那么相对urlperson
是/cms/person/1/person/
出于这个原因,您可能会发现在网址中使用尾部斜杠更容易,例如
如果这样做,您根本不需要在表单标记中使用
action
属性 .