Django通过更改URL呈现重定向到页面

时间:2017-06-08 13:54:37

标签: python html django url web

我正在为我的django应用程序创建一个自定义登录,当我点击模板上的logout我编程时会出现问题,因此它会转到索引页面,但浏览器中的网址仍然是http://127.0.0.1:8000/logout/甚至达到索引页。我希望它成为http://127.0.0.1:8000/

views.py

def logout(request):
    try:
        del request.session['uid']
        return render(request, 'home.html')
    except:
        pass
    return render(request, 'home.html')

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

模板

 <p>
    Publisher Dashboard, Welcome {{ user.name }}.
    <a href="{% url 'logout' %}" class="btn btn-primary">Logout</a>
</p>

urls.py

from django.conf.urls import url
from django.contrib import admin
from mainapp import views

urlpatterns = [
url(r'^$', views.home_page, name='homepage'),
url(r'^registration/$', views.signup_user, name='signup_user'),
....
url(r'^logout/$', views.logout, name='logout'),
]

2 个答案:

答案 0 :(得分:1)

目前您正在呈现'home.html模板,而不是将用户重定向到主页。

如果您想重定向,则应返回HttpResponseRedirect响应,或使用redirect快捷方式。

from django.shortcuts import redirect

def logout(request):
    ...
    return redirect('/')

答案 1 :(得分:0)

渲染将给出一个新的网页,但没有一个新的URL。

重定向将给出一个新的URL。

因此,在渲染的情况下,即使将加载新的网页,您的地址栏也不会更改。 但是在使用新URL的情况下,您实际上是在获取新URL,因此该URL的新网页的地址栏也会更新。