Django 渲染以查看不 html

Django render to view not html

我的 Django 项目中有模板。我的 index.html 是自定义登录页面。

在views.py中:

def index(request):
    return render(request, 'index.html')

只要点击提交按钮,页面就会转到:

def checklogin(request):
    username = request.POST('username')    # input element name in template.
    username = request.POST('password')    # input element name in template.
    if user is None:
        return render(request, 'register.html') # Page to register as user.
    else:
        return render(request, 'home.html')

def home(request):
    return render(request, 'home.html')

我的urls.py:

from myapp import views

urlpatterns = patterns('',
                       url(r'^login/$', views.index, name=index),
                       url(r'^login/register/$', views.checklogin, name='register'),
                       url(r'^$', views.home, name='home'),
                      )

这很好用。索引页面会将您定向到登录页面。如果你失败了,它将带你去注册 - url 从 127.0.0.1:8000/mysite/login 更改为 127.0.0.1:8000/mysite/login/register/。

但是,如果登录成功,用户将被带到 home.html,但不是 127.0.0.1:8000/mysite/ 而是 127.0.0.1:8000/mysite/login/register/ 作为出色地。这会产生一个问题,因为如果我将 def home(request) 中的查询传递给 home.html 模板,它只能在 127.0.0.1:8000/mysite/ 而不能在 127.0.0.1:8000/mysite/login/注册/.

有人可以帮助我定向到 def home(请求),而不仅仅是成功登录的 html 吗?

你不应该那样做。无论如何,你应该总是在 POST 之后重定向;所以在这里你只是重定向回 'home'.

from django.shortcuts import redirect
...
return redirect('home')

当然,注册分支也应该是重定向。