Django на URL App Engine

У меня проблема с URL-адресами при использовании Django в App Engine.

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

]

Происходит следующее: если я нажимаю кнопку "Выход" с любой страницы, кроме домашней страницы (т. Е. "Регистрация"), он будет искать URL "register/logout/", который не существует, поскольку URL-адрес для представления "Выход из системы" просто "выйти /"

Я попытался изменить urlconf, чтобы установить URL для выхода

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

Но это также терпит неудачу при попытке использовать кнопку, если на других страницах, которые не включают просто "зарегистрироваться /" в URL.

Не уверен, как решить эту проблему, но мне кажется, что это должно быть просто. Что я не знаю, как справиться с этим?

1 ответ

Решение

Ожидаемое поведение App Engine / Django. Вы использовали относительные URL в вашем шаблоне. Таким образом, когда вы просматриваете веб-страницу по адресу / register /, указанная выше ссылка будет указывать на "/ register / logout /", аналогично, если бы вы были / активировать / страницу, ссылка была бы "/activate/ logout /".

Решение? используйте абсолютный URL, например, '/ logout /'

Другие вопросы по тегам