2014-02-13 3 views
0

Когда я иду в http://localhost:8000/getAndAnalyzePosts/index ней и добавляет 404-слэш (он делает это независимо от того, есть ли у меня APPEND_SLASH = True или APPEND_SLASH = False404 на Джанго приложение, когда адрес не имеет расширение (в мезонине)

Переход к http://localhost:8000/getAndAnalyzePosts/test Безразлично «т работы, но http://localhost:8000/getAndAnalyzePosts/test.anything делает.

Я действительно хочу использовать '^$' для индекса, но это не работает, либо.

Я это приложение в проекте антресоли, я не пытался положить его в регулярный проект django - возможно, должен сделать это nex т. Остальная часть моего проекта работает отлично (с помощью приложения Мезонин по умолчанию)

getAndAnalyzePosts/urls.py

from django.conf.urls import patterns, url 

from getAndAnalyzePosts import views 

urlpatterns = patterns('', 
    url(r'^index$', views.index, name='index'), 
    url(r'^test.+$', views.test, name='test'), 
    url(r'^getSentiment$', views.getSentiment, name='getSentiment'), 
) 

Примечание: getSentiment хочет пост переменные, так что я на самом деле не тестирование, что непосредственно

urls.py (основной проект)

from __future__ import unicode_literals 

from django.conf.urls import patterns, include, url 
from django.conf.urls.i18n import i18n_patterns 
from django.contrib import admin 
from mezzanine.core.views import direct_to_template 
admin.autodiscover() 
urlpatterns = i18n_patterns("", 
    ("^admin/", include(admin.site.urls)), 
) 
urlpatterns += patterns('', 
    url(r"^$", direct_to_template, {"template": "index.html"}, name="home"), 
    (r"^", include("mezzanine.urls")), 
    url(r'^getAndAnalyzePosts/', include('getAndAnalyzePosts.urls', namespace="getAndAnalyzePosts")), 
) 
handler404 = "mezzanine.core.views.page_not_found" 
handler500 = "mezzanine.core.views.server_error" 

Кроме того, я бегу python manage.py show_urls от Джанго-расширений и возвращает:

/getAndAnalyzePosts/getSentiment  getAndAnalyzePosts.views.getSentiment getSentiment 
/getAndAnalyzePosts/index  getAndAnalyzePosts.views.index index 
/getAndAnalyzePosts/test.+  getAndAnalyzePosts.views.test test 

ответ

1

Проект urls.py, который вы вставили здесь на каком-то этапе, имел некоторые комментарии в больших больших заглавных букв, описывающих точную проблему, с которой вы сталкиваетесь, вот их оригинальные источник:

https://github.com/stephenmcd/mezzanine/blob/master/mezzanine/project_template/urls.py#L63-L66

+0

Спасибо, что делает трюк. – exrhizo

+0

Это _nasty_ one :(Спасибо –

0

Append слэш вариант гарантирует, что если входящий URL не имеет завершающего слэш и URL не получает матч, то он уходит в отставку после добавления слэша. То, что он не делает, это повторить попытку после удаления косой черты из входящего URL. Поскольку входящий url имеет конечную косую черту, вам нужно/перед $ Добавить/в конце, до $ во всех ваших URL-адресах, (r '^ getSentiment/$) Пусть append slash будет true, и он должен работать.

. + Работы т.к.. в regex сопоставляя что-либо, кроме новой строки, и вы добавили + после него, чтобы он соответствовал любому символу любое количество раз, чтобы соответствовать. вам нужно сбежать от него (.) Выполнение этого ^text\..+$

+0

Я попытался '^ индексной/$' 'с APPEND_SLASH = true' в моих настройках и этого 404'd, когда я пошел в' HTTP: // локальный: 8000/getAndAnalyzePosts/индекс/' – exrhizo

+0

Является ли ваш debug = True? можете ли вы дать ответ, полученный в вашем браузере django? – lmc

+0

Он не дает никаких подробностей, только говорит 404, запрашивает метод GET и запрашивает URL-адрес и «Вы видите эту ошибку, потому что у вас DEBUG = True в вашем файле настроек Django. Измените это на False и Django отобразит стандартный 404 стр. ". – exrhizo