Я пробовал все, и я прочитал каждый вопрос / ответ по этому вопросу, и у меня ничего не работает. Я надеюсь, что кто-то может предложить другое возможное решение.
У меня есть пара приложений. Один из них ManagerApp
, а другой Accounts
.
В приложении Accounts
есть представление под названием view_user
. Он описан в файле URL как
url(r'^user/view/(?P<username>.+)/$', views.view_user, name='view_user')
В base.html
есть панель заголовка с именем пользователя. Когда он нажимает на свое имя, я хочу, чтобы он попадал на страницу своего личного профиля. Итак, это читается следующим образом;
...
<ul class="nav navbar-nav navbar-right">
{% if user.is_authenticated %}
<li><a href="{% url 'accounts.views.view_user' user.username %}">{{user.username}}</a></li>
{% else %}
<li><a href="#">My Account</a></li>
{% endif %}
...
Но когда я пытаюсь загрузить страницу, я получаю
**NoReverseMatch at /ManagerApp/main/
Reverse for 'accounts.views.view_user' with arguments '(u'johnny',)' and keyword arguments '{}' not found.**
Почему это происходит? Я использую кавычки, с синтаксисом все в порядке. UrlConf назван правильно и т. д. Я просто не вижу проблемы, а прошел уже час :-(
Добавлено
Это определение вида:
def view_user(request, username):
''' Shows user data '''
user = get_object_or_404(User, username = username) #check if user name exist
groups = Group.objects.filter(users = user)
context = {'user': user, 'groupsOfUser': groups}
return render(request, 'accounts/view_user.html', context)
name
? (т.е.{% url 'view_user' username=user.username %}
. Также ваш параметр является так называемым именованным параметром, поэтому вы должны передать его даже с его именем (username
) - person yedpodtrzitko   schedule 28.05.2014'view_user'
, если я не укажу имя приложения? Помните, что это представление находится в другом приложении. - person CodyBugstein   schedule 28.05.2014url(r'^user/view/$', views.view_user, name='view_user')
. Измените функцию просмотра, чтобы также удалить параметр:def view_user(request):
. Если это все еще не работает, вам нужно копнуть глубже, чтобы понять, почему URL-адрес не был загружен. Если это работает, то, вероятно, что-то с регулярным выражением. Лично я всегда использую числовые идентификаторы в URL-адресе и никогда не использую имя пользователя, так как они могут содержать забавные символы. О, и удалите все декораторы представления, чтобы изолировать их как причину - person user193130   schedule 28.05.2014