我有一个通用的登录表单,可以使用django.contrib.auth.views中的登录模块完美地运行
我想要做的是如果用户未经过身份验证,则可以从网站标题(包含在所有页面中)中看到登录下拉列表。如果用户未经过身份验证,我的下拉列表工作正常,但在填写用户名/密码后,没有任何反应。
我认为这个例子很接近,但我无法让它发挥作用:django - what goes into the form action parameter when view requires a parameter?
将提交按钮的格式属性发送到不同的URL的方法是否正确?是否有另一种首选方法来实现这一目标?
#relevant form code from the header.html include
<form action="" method="post" class="submission-form">
{% if form.errors %}
<p class="error">Sorry, that is not a valid username or password</p>
{% endif %}
<label for="username">User name:</label>
<input type="text" name="username" id="username">
<label for="password">Password:</label>
<input type="password" name="password" id="password">
<input type="submit" value="login" action="http://mysite.com/accounts/login/" />{% csrf_token %}
<input type="hidden" name="next" value="{{ next|escape }}" />
</form>
此代码直接从我的登录页面复制,该页面正常运行。
让我知道有助于回答问题的任何其他代码。
答案 0 :(得分:1)
感谢此处及Pythonanywhere提供的一些反馈意见,我已经能够解决此问题。
由于登录在/ accounts / login /页面上正常运行,我已将其缩小到传递HTML的问题。我发现从头部登录只能在/ accounts / login /上工作,但其他页面没有,所以这意味着确实存在传递给页面的问题。
问题最终是我有一个名为&#34; action&#34;的输入属性,它应该是&#34; formaction&#34;。我知道它非常接近,这将是一种愚蠢的东西: - )
答案 1 :(得分:0)
将表单的action
属性设置为与正在查看的当前视图不同的URL,以便执行登录,这绝对没有错。
您可以随时将用户直接带回他们正在查看的页面,方法是将表单中的next
隐藏字段设置为当前URL的值,然后将其传递给内置登录视图,或者将它们重定向到其他地方......这完全取决于你。