当我尝试使用@login_required
转到视图的网址时,它会将我重定向到登录表单。但渲染的表单没有action=
属性,当我点击提交按钮时没有任何反应。但是当我去/admin/
时,我得到了工作登录表单。以这种方式登录后,所有视图都正常工作。我正在使用admin_bootstrap
所以它是不同的登录表单。但为什么默认的那种行为呢?
相关代码:
mySubApp / views.py :
@login_required
def index(request):
user = request.user
return HttpResponse("Hello, world. You're at index.")
mainApp / urls.py :
#login
url(r'^login/$', 'django.contrib.auth.views.login', name='LogMeIn'),
#mySubApp
url(r'^subapp/', include('mySubApp.urls')),
mySubApp / urls.py :
urlpatterns = patterns('',
url(r'^$', views.index, name='index'),
)
settings.py :
LOGIN_URL = 'LogMeIn'
我是否需要创建自定义登录表单才能使其正常运行?
答案 0 :(得分:5)
使用身份验证视图时,您必须define your own templates(defualt不提供这些视图):
Django提供了几个可用于处理登录,注销和密码管理的视图。这些使用了股票身份证明表格,但您也可以传递自己的表格。
Django没有为身份验证视图提供默认模板 - 但是下面的每个视图都记录了模板上下文。
所以创建一个registration/login.html
:
<form action="{% url auth:login %}" method="post">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Submit" />
</form>