URL-адреса шаблонов Django не обновляются

В последнее время я менял некоторые URL-адреса шаблонов представлений и переключился с:

(r'^(?P<slug>[^\.]+)/view_post/$', 'view_post'),

to :

(r'^(?P<slug>[^\.]+)/post/$', 'post'),

в моем приложении для блога urls.py. И, хотя я сделал syncdb и перенес свое приложение для блога на юг, новый URL-адрес, похоже, не учитывается моими картами сайта или интерфейсом администратора, который перенаправляет меня на старый URL-адрес, когда я нажимаю просмотреть это статья.


person Oleiade    schedule 29.04.2011    source источник
comment
Вы не изменили URL. Вы только что изменили метод просмотра, используемый тем же URL.   -  person Jack M.    schedule 29.04.2011
comment
Хороший вопрос :) Я пропустил это.   -  person Max    schedule 29.04.2011
comment
Моя вина, я не вставил исходное состояние, как оно было на самом деле... (отредактировано для view_post) Старые URL-адреса действительно отличались от текущего URL-адреса. Тогда есть идеи? :)   -  person Oleiade    schedule 29.04.2011
comment
Можете ли вы опубликовать свой код шаблона, который вызывает эти URL-адреса? Спасибо.   -  person rabbid    schedule 29.04.2011
comment
Вот он: pastebin.com/Ksf6ZAtS Спасибо за помощь!   -  person Oleiade    schedule 30.04.2011


Ответы (3)


Как вы перезапускаете Gunicorn? с -ХУП? Звучит странно, но попробуйте полностью убить его, а затем перезапустить. Кроме того, вам не нужно перезапускать Nginx, просто gunicorn

#start command, stores pid in a file in /tmp
sudo python manage.py run_gunicorn -p /tmp/gunicorn.pid -b 127.0.0.1:8000 --daemon

#stop command
sudo kill `cat /tmp/gunicorn.pid` #note those aren't apostrophes, but the ~ key

#restart commad
sudo kill -HUP `cat /tmp/gunicorn.pid`

Я пишу их в виде небольших скриптов, чтобы я мог просто вызвать ./start ./stop ./restart из моей основной папки, что упрощает

person j_syk    schedule 29.04.2011
comment
На самом деле я использовал супервизор для управления пушечным рогом. Убил все инстансы ганикорн в системе и пробовал по-вашему, но не получилось. Может быть, у gunicorn есть какой-то кеш? - person Oleiade; 30.04.2011
comment
запустить ps aux | grep gunicorn и посмотреть, что получилось? (Я предполагаю, что это какая-то ОС * nix) - person j_syk; 30.04.2011
comment
Можно с уверенностью сказать, что сейчас это не сервер? одна вещь, которую я иногда делаю, когда у меня возникают проблемы с обновлением кода, и я не знаю, насколько это безопасно, но я удаляю версии файлов .pyc, а затем перекомпилирую .py - person j_syk; 30.04.2011
comment
Ну, я тоже только что попробовал, но, похоже, тоже не получается. Я начинаю чувствовать отчаяние. Я нашел небольшой трюк, чтобы старый URL-адрес указывал на новый. Но я хотел бы иметь возможность удалить наследие... - person Oleiade; 30.04.2011

Если это работает под Apache, вам придется принудительно перезагрузить или перезапустить apache, чтобы ваши изменения вступили в силу.

Кроме того, вам не нужно синхронизировать базу данных или переносить приложение при изменении карты urls.py (если только вы не используете пользовательское дополнение, о котором я не знаю).

person Max    schedule 29.04.2011
comment
На самом деле я использую Nginx и уже много раз перезапускал его и пушку. К сожалению, без последствий... - person Oleiade; 29.04.2011

Вы исправили URL-адреса из своего шаблона? В вашем шаблоне я вижу два экземпляра:

<input type="hidden" name="next" value="{% url blog.views.view_post slug=post.slug %}" />

Вышеупомянутое должно быть:

<input type="hidden" name="next" value="{% url blog.views.post slug=post.slug %}" />
person Thierry Lam    schedule 30.04.2011
comment
Да, я сделал, и это, кажется, ничего не меняет. Кроме того, моя карта сайта тоже не обновляется, так что я думаю, проблема в более высоком уровне, чем в шаблонах... Начинаю впадать в отчаяние ^^ - person Oleiade; 30.04.2011
comment
Можете ли вы опубликовать свой код карты сайта из вашего проекта urls.py? Я считаю, что это должно выглядеть примерно так: docs.djangoproject.com/en /1.3/ref/contrib/карты сайта/. Я хочу увидеть содержимое переменной sitemaps. - person Thierry Lam; 30.04.2011