我使用django auth表单UserCreationForm创建一个表单,它在没有'action'的情况下工作。为什么会这样?
views.py
def sign_up(request):
if request.method == 'POST':
form = UserCreationForm(request.POST)
if form.is_valid():
form.save()
username = form.cleaned_data.get('username')
password = form.cleaned_data.get('password1')
user = authenticate(username=username, password=password)
login(request, user)
return redirect('contacts:index')
else:
form = UserCreationForm()
return render(request, 'account/signup.html', {'form': form})
sgnup.html
<h2>Sign up</h2>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Sign up!</button>
</form>
答案 0 :(得分:3)
因为默认情况下,您的浏览器会将表单发布到当前网址。因此,如果您的获取视图和帖子视图共享相同的URL,它就可以正常工作。
这显然就是这种情况,因为你使用相同的视图进行POST和GET。
答案 1 :(得分:1)
正如@dirkgroten所说,在HTML5中,没有必要指定表单操作,在像你这样的情况下,没有指定任何操作 - 表单被发布到当前URL。