为什么表单不需要“动作”? UserCreationForm

时间:2017-12-03 18:56:39

标签: python html django

我使用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>

2 个答案:

答案 0 :(得分:3)

因为默认情况下,您的浏览器会将表单发布到当前网址。因此,如果您的获取视图和帖子视图共享相同的URL,它就可以正常工作。

这显然就是这种情况,因为你使用相同的视图进行POST和GET。

答案 1 :(得分:1)

正如@dirkgroten所说,在HTML5中,没有必要指定表单操作,在像你这样的情况下,没有指定任何操作 - 表单被发布到当前URL。