Ошибка Django NoReverseMatch - PullRequest
       0

Ошибка Django NoReverseMatch

1 голос
/ 07 июня 2011

Я новичок в Django и начал работать над зрелым проектом Django.

Я хочу добавить новую страницу на экраны учетной записи пользователя и дать ссылку на нее. Но я получаю ошибку NoReverseMatch.

К /users/urls.py я добавил:

url(r'^panel/history$',
    'theproject.users.views.history',
    name='account_history'
),

... что соответствует строке над ней:

url(r'^panel$',
    'theproject.users.views.control_panel',
    name='account_panel'
),

К /users/views.py я добавил:

@login_required
def history(request):
    return render_to_response('users/ourbrand_history.html', {},
    context_instance=RequestContext(request))

... что соответствует строке над ней:

@login_required
def control_panel(request):
    return render_to_response('users/ourbrand_panel.html', {},
    context_instance=RequestContext(request))

В /templates/users/ourbrand_panel.html я добавил:

<a href="{% url account_history %}">History</a>

... что соответствует строке над ней:

<a href="{% url account_panel %}">Home</a>

Теперь, когда я загружаю / panel, я получаю TemplateSyntaxError: NoReverseMatch.

Reverse for 'account_history' with arguments '()' and keyword arguments '{}' not found.

ОБНОВЛЕНИЕ: В качестве теста я удалил ссылку в шаблоне - и / панель загрузилась нормально. Если я затем удаляю /users/urls.py и /users/views.py / панель все еще загружается. Я удалил все файлы cookie, историю и т. Д. Нужно ли запускать команду в терминале (например, rake in ruby), чтобы внести изменения в urls.py? Или изменения должны «просто работать»?

Ответы [ 4 ]

2 голосов
/ 06 июня 2012

Если вы используете mod_wsgi, то просто:

$ touch /path/to/your/wsgi_file.wsgi

Нужно добиться цели (без перезагрузки сервера).

2 голосов
/ 07 июня 2011

Попробуйте:

{% url users.views.control_panel %}
{% url users.views.history %}

в шаблоне и изменить:

url(r'^panel/history/$','theproject.users.views.history',name='account_history'),
url(r'^panel/$','theproject.users.views.control_panel',name='account_panel'),

           ^

в URL. (обратите внимание на косую черту в первом аргументе.)

1 голос
/ 08 июня 2011

Отвечая на мой собственный вопрос (на основании предоставленной справки здесь ) ...

Поскольку сервер находится в рабочем состоянии, изменения на urls.py не будут иметь никакого эффекта, пока сервер не будет перезапущен,В настоящее время у меня нет доступа su, поэтому я не могу apachectl restart, но, похоже, это решит проблему.

1 голос
/ 07 июня 2011

Переместите это:

url(r'^panel/history/$',
    'theproject.users.views.history',
    name='account_history'
),

с users/urls.py на уровень проекта urls.py.

Возможно, users/urls.py не связан с основным urls.py, который также определяет представление для /panel/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...