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')
当然,注册分支也应该是重定向。
我的 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')
当然,注册分支也应该是重定向。