【发布时间】:2014-05-21 17:53:57
【问题描述】:
这就是我的views.py 的样子:
class HomePageView(TemplateView):
template_name="home.html"
def dispatch(self,request,*args,**kwargs):
if not request.user.is_authenticated():
raise http.Http404
return super(HomePageView,self).dispatch(request,*args,**kwargs)
我的home.html:
{% extends "base.html" %}
{% block content %}
{% if user.is_authenticated %}
### display some user specic data
{% else %}
<form class="navbar-form navbar-right" role="form" action="" method="post">
{% csrf_token %}
{% if form.errors %}
<p>Your username and password didn't match. Please try again.ohh!</p>
{% endif %}
<div class="form-group">
{{ form.username.label_tag }}
<input type="text" placeholder="Uname or Email" class="form-control" name="username">
</div>
<div class="form-group">
<input type="password" placeholder="Password" class="form-control" name="password">
</div>
<button type="submit" class="btn btn-success">Sign in</button>
</form>
{% endif %}
{% endblock %}
urls.py:
urlpatterns = patterns('',
# Examples:
url(r'^$', HomePageView.as_view(), name='home'),)
我面临两个问题:
当我转到http://127.0.0.1:8000/(作为 GET 请求)时,我收到 404 错误。
在 GET 请求的情况下,我仍然想重定向到home.html,因为那将显示登录表单
在 POST 请求的情况下,我想重定向到 'home.html` 将在用户登录时处理。
如果有日志记录错误,我想将该信息作为 form.errors 传递到模板中呈现。
我很难实现这些。这里有什么指点吗?
【问题讨论】:
-
你应该在这里使用
FormView而不是TemplateView吗? docs.djangoproject.com/en/dev/ref/class-based-views/…
标签: django django-class-based-views django-users django-generic-views