1

我在 App Engine 上使用 Django 的网址有问题。

HTML:

<li>Welcome {{ user.first_name }}</li>
<li><a href="logout/">Logout</a></li>

网址.py

    from django.conf.urls import patterns, include, url
from django.contrib import admin
from home import views
from registration import views

admin.autodiscover()

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'^$', 'home.views.index', name='home'),
    url(r'^login/$', 'registration.views.login_view', name='login'),
    url(r'^register/$', 'registration.views.coach_register', name='coach_register'),
    url(r'^activate/$', 'registration.views.activate', name='activate'),
    url(r'^logout/$','registration.views.logout_view', name='logout'),

]

发生的事情是,如果我从主页以外的任何页面(即“注册”)单击注销,那么它将搜索一个不存在的 url“注册/注销/”,因为注销视图的 url 是只是'注销/'

我尝试更改 urlconf 以将注销 url 设置为

url(r'^register/logout/$' ...)

但是,如果在 URL 中不包含“注册/”的其他页面上尝试使用该按钮,这也会失败。

不知道如何解决这个问题,但在我看来它应该很简单。我对处理这些一无所知?

4

1 回答 1

0

App Engine / Django 显示的行为是意料之中的。您在模板中使用了相对 url。因此,当您在 /register/ 查看网页时,上面的链接将指向“/register/logout/”,如果您是 /activate/ 页面,则链接将是“/activate/logout/”

解决方案?使用绝对网址,例如 '/logout/'

于 2015-08-28T01:58:03.173 回答