Джанго URL-адреса без Слэша не редирект
у меня есть два приложения на двух разных компьютерах. На компьютере а, в urls.py
файл у меня есть строка, как показано ниже:
(r'^cast/$', 'mySite.simulate.views.cast')
и этот url будет работать для обоих mySite.com/cast/
и mySite.com/cast
. Но на компьютере B у меня есть аналогичный url-адрес, написанный как:
(r'^login/$', 'mySite.myUser.views.login')
почему-то на компьютере B the url mySite.com/login
/ будет работать, но mySite.com/login
будет висеть и не будет направлять обратно в mySite.com/login/
как это будет на компьютере A. Есть ли что-то, что я пропустил? Оба url.py
файлы выглядят одинаково для меня.
5 ответов:
или вы можете написать свои URL-адреса следующим образом:
(r'^login/?$', 'mySite.myUser.views.login')
знак вопроса после конечной косой черты делает его необязательным в регулярном выражении. Используйте его, если по каким-то причинам вы не хотите использовать параметр APPEND_SLASH.
Это улучшает ответ @Michael Gendin. Его ответ служит идентичной странице с двумя отдельными URL-адресами. Было бы лучше иметь
login
автоматическое перенаправление наlogin/
, а затем служить последним в качестве главной страницы:from django.conf.urls import patterns from django.views.generic import RedirectView urlpatterns = patterns('', # Redirect login to login/ (r'^login$', RedirectView.as_view(url = '/login/')), # Handle the page with the slash. (r'^login/', "views.my_handler"), )
У меня тоже была такая же проблема. Мое решение было поставлено ( / / ) перед конечной строкой моего регулярного выражения.
url(r'^artists/(?P[\d]+)(|/)$', ArtistDetailView.as_view()),
У меня была такая же проблема. В моем случае это был несвежий остаток от какой-то старой версии в urls.py, из Перед staticfiles:
url(r'^%s(?P<path>.*)$' % settings.MEDIA_URL.lstrip('/'), 'django.views.static.serve', kwargs={'document_root': settings.MEDIA_ROOT}),
MEDIA_URL был пуст, поэтому этот шаблон соответствовал всему.