我有一个视图(登录视图)。将由/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')

10-05 20:49
查看更多