【问题标题】:redirecting from view to another html page with another url slug in Django 1.6在 Django 1.6 中使用另一个 url slug 从视图重定向到另一个 html 页面
【发布时间】:2014-08-06 15:30:36
【问题描述】:

我有一个视图(登录视图)。将被/login/ url 使用。

我的意思是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 上我有一个表单(要求用户在文本框中输入一些内容。)在这个主页的末尾有一个提交按钮,点击这个提交按钮后我将保存所有输入的详细信息在数据库中。 我可以做所有这些事情,但我被困在重定向部分(我能够更改 html 页面(我的意思是在成功登录后显示“home.html”的内容))

但我无法更改 url slug。还是/login/ 但我希望它是/home/

显然我有另一个 home.html 视图,它将处理将数据从表单保存到 DB。

【问题讨论】:

    标签: python django python-2.7 django-templates django-views


    【解决方案1】:

    您需要做的是让登录视图在成功时返回重定向。例如:

    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')
    

    【讨论】:

      【解决方案2】:
      from django.core.urlresolvers import reverse
      from django.http import HttpResponseRedirect
      
      def login(request):
           If success:
              return HttpResponseRedirect(reverse('home.view'));
      

      在你的 urls.py 中

      url(r'^home/$', 'home', name='home.view')
      

      你的主视图看起来像

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

      这有点类似于 Joey 给出的答案,因为 django 文档建议只写一次,所以更喜欢写 reverse

      DOC

      【讨论】:

        猜你喜欢
        • 2015-12-12
        • 2016-12-14
        • 2015-08-14
        • 1970-01-01
        • 1970-01-01
        • 2013-08-17
        • 2020-01-01
        • 2018-10-26
        • 2014-09-01
        相关资源
        最近更新 更多