我正在使用Django的django.contrib.auth.forms
模块,特别是UserCreationForm
类。在
这是我表单的模板化版本,其中register_form
是从{UserCreationForm
:
<form id="registration" method="post" action="/register">
{% csrf_token %}
<table class="float_left">
<tr><th><label for="id_username">Username:</label></th><td>{{ register_form.username }}</td></tr>
<tr><th><label for="id_password1">Password:</label></th><td>{{ register_form.password1 }}</td></tr>
<tr><th><label for="id_password2">Confirm Password:</label></th><td>{{ register_form.password2 }}</td></tr>
</table>
<input class="float_right button_input" type="submit" value="Register" />
</form>
它在页面上显示得很好。注意,操作被设置为"/register"
。然而,当我点击提交按钮时,什么也没有发生。我打开Chrome曾经非常方便的JavaScript控制台,看到了以下输出(运行在Django的manage.py
dev服务器上):
太棒了。注意,这里Django(或者其他东西,可能)已经将includes
目录插入到我的路径中。在
以下是urls.py
中的相关片段:
urlpatterns = patterns('',
url(r'^register', 'authentication.views.register'),
)
和views.py
:
def register(request):
# csrf is used to prevent Cross-Site Request Forgeries (i.e. XSS attacks, SQL injections, etc.)
c = {}
c.update(csrf(request))
# if logged in, redirect to personal profile
if request.method == 'POST':
form = UserCreationForm(request.POST)
if form.is_valid():
new_user = form.save()
return HttpResponseRedirect("/home")
else:
c['register_form'] = UserCreationForm()
return render_to_response('authentication/register.html', c, context_instance=RequestContext(request))
如果表单是有效的(在将新用户保存到数据库中之后),只需一个非常简单的重定向到/home
,否则返回到同一页面(authentication /register.html
是相关的模板)。在
我很困惑。在
提前谢谢你能告诉我的一切。在
编辑:我应该注意,我已经使用http://localhost:8000/
作为我正在开发的Django应用程序的域。事实上,当我使用UserCreationForm
的内置as_table()
方法打印时,这个表单似乎也运行得很好。但是它看起来很糟糕,所以我切换到手动格式化表单,现在它不起作用了。我没有调整过<form>
标记一次。在我开始自动印刷之前,我还得供应。在
主要编辑:
没关系,伙计们,我明白了。原来页面中有一些遗留代码,在我开始将其转换为Django之前,它试图调用一些用于表单验证的旧php,这正是我一直在做的。谢谢你的评论,但我要结束这个问题。在
除非您明确设置了它,否则Django的devserver将在
127.0.0.1:8000
上为您的页面提供服务。在从您的POST URL,我只能猜测您有一些PHP应用程序配置为在
http://localhost:8000
上提供服务,可能是通过Apache提供的。在相关问题 更多 >
编程相关推荐