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