App Engine URL 上的 Django

Django on App Engine URLs

我的 urls 在 App Engine 上使用 Django 时遇到问题。

HTML:

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

urls.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'),

]

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

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

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

但是如果在 url.

中不包含 'register/' 的其他页面上尝试使用该按钮时,这也会失败

不确定如何解决这个问题,但在我看来应该很简单。我有什么不懂的处理这些的?

App Engine/Django 显示的行为是可以预期的。您在模板中使用了相对 url。因此,当您在 /register/ 查看网页时,上面的 link 将指向 '/register/logout/' 同样,如果您是 /activate/ 页面, link 将指向 '/activate/logout/'

解决办法?使用绝对 url 例如 '/logout/'