我有一个视图(登录视图)。将由/login/
网址使用。
我的意思是http://<base-url>/login/
在urls.py中,我正在执行url(r'^login/$',myapp.views.login)
def login(request,template='login.html'):
#do login stuff
If successfully logged-in:
then redirect to new html page with new url let say '/home/'
else:
show same login page again and ask user to enter valid credentials
因此,如果用户成功登录,我想重定向/转移到新链接
http://<base-url>/home/
,它应该与模板文件夹中的“ home.html”文件关联(其中“ login.html”已经存在)现在在此home.html上,我有一个表单(要求用户在文本框中输入一些内容。),在此主页的末尾,单击此提交按钮后有一个提交按钮,我会将所有输入的详细信息保存在DB中。
我可以做所有这些事情,但是我被困在重定向部分(我可以更改html页面(我的意思是成功登录后,它显示“ home.html”的内容))
但我无法更改网址段。它仍然是
/login/
但我希望它是
/home/
。显然,我对home.html有另一个视图,该视图将处理将数据从表单保存到数据库的情况。
最佳答案
您需要做的是使登录视图成功返回重定向。例如:
from django.http import HttpResponseRedirect
def login(request, template='login.html'):
if successfully logged in:
return HttpResponseRedirect('/home/')
...
在这种情况下,/ home /将需要是urls.py中的另一个条目和另一个视图。例如:
urls.py:
url(r'^home/$', 'myapp.views.home'),
views.py:
def home(request):
return render(request, 'home.html')