我正在尝试为自定义用户注册表单保存帖子数据,但我无法确定哪里出错了。我怀疑问题出在mainapp/urls
。我已经对这个主题做了一些研究,请阅读以下内容
documentation,Question on StackOverflow,Question on StackOverflow以及其他许多人,但我找不到问题。
{% extends 'base.html'%}
{% load staticfiles %}
{% block content%}
{% load bootstrap %}
<div class = "signup-box">
<h2>Sign up</h2>
<form class="form-horizontal" action="signup" method="post">
{% csrf_token %}
<!-- {{ form|bootstrap }} -->
{{ form.username.label }}
{{ form.username }}
{{ form.first_name.label }}
{{ form.first_name }}
{{ form.last_name.label }}
{{ form.last_name }}
{{ form.email.label }}
{{ form.email }}
{{ form.password1.label }}
{{ form.password1 }}
{{ form.password2.label }}
{{ form.password2 }}<br>
<input type="submit" value="Submit" />
</form>
</div>
{% endblock %}
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$', views.home),
url(r'^login/$', views.login, name='login'),
url(r'^signup/$', views.signup, name='signup'),
]
from django.shortcuts import render, redirect
from .forms import RegistrationForm
from .models import User
from django.contrib import messages
from django.http import HttpResponse
# Create your views here.
def register_page(request):
if request.method == "POST":
form = RegistrationForm(request.POST)
if form.is_valid():
form.save()
return HttpResponse('<h1>The form is valid!<h1>')
else:
form = RegistrationForm(request.POST)
args = {'form':form}
return render(request, 'signup', args)
else:
form = RegistrationForm()
return render(request, 'signup.html', {'form': form})
提交表单后出现以下错误
The current path, register_page/register_page/signup, didn't match any of these.
答案 0 :(得分:1)
问题是您要发布到的网址。你的表单的动作是一个相对的路径,&#34;注册&#34 ;;因为它没有前导斜杠,所以它将始终附加到当前路径。
你可以通过预先设置斜杠来解决这个问题,但实际上你不应该这样做;您应该发布到您来自的相同网址,因此action="."
。
请注意,您的代码存在各种其他错误,尤其是如果验证失败,您不必要地重新实例化该表单,因此您永远不会看到任何验证错误。