Добавление двух идентификаторов в мой диспетчер URL - PullRequest
0 голосов
/ 07 июля 2011

Я относительно новичок в python / django.У меня проблема с отправкой идентификаторов через мой urls.py.

Я пытаюсь добавить администратора на страницу бизнес-профиля в моем проекте.

Мои views.py:

@login_required
def make_admin(request, bus_id, user_id):
user = request.user
u = get_object_or_404(User, pk = user_id)
b = get_object_or_404(Business, pk = bus_id)
b.admin.add(u)
followcount = b.followers.count()
photo = BusinessLogo.objects.all().filter(business_link = bus_id)[:1]
return render_to_response('business/followers.html',
                    {'user':user, 'b':b, 'followcount':followcount, 'photo':photo, 'u':u}, context_instance=RequestContext(request))

В моем шаблоне я пытаюсь передать bus_id, а также user_id, но продолжаю получать синтаксическую ошибку, которая, как я предполагаю, связана смои URL

Мой шаблон:

...
{% if follow in b.admin.all %}
[<a href="{% url remove_admin b.id u.id %}">Remove Admin</a>]
{% else %}
[<a href="{% url make_admin b.id u.id %}">Make Admin</a>]
{% endif %}
...

Мой urls.py на данный момент:

url(r"^make/(?P<bus_id>\d+)/(?P<user_id>\d+)/$", make_admin, name="make_admin"),
url(r"^remove/(?P<bus_id>\d+)/(?P<user_id>\d+)/$", remove_admin, name="remove_admin"),

Мне просто трудно понять, как добавить user_id вмои URLВышеприведенный пример не работает.

Спасибо всем,

Стив

РЕДАКТИРОВАТЬ : ошибка, с которой я столкнулся:

Поймано NoReverseMatch при рендеринге: обратное для 'remove_admin' с аргументами '(1L,' ')' и ключевыми словами '{}' не найдено.

Ответы [ 2 ]

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

Единственное, что я вижу, что кажется неправильным, это {% if follow in b.admin.all %} в вашем контексте нет переменной follow в вашем коде.

Если вы опубликовали более подробную информацию о вашей ошибке или трассировке стека, это было бы очень полезно.

РЕДАКТИРОВАТЬ : Хорошо, ваша ошибка полезна:)

Поймано NoReverseMatch при рендеринге: обратное для 'remove_admin' с аргументами '(1L,' ')' и ключевыми словами '{}' не найдено.

Это означает, что функция обращения URL получила два аргумента 1L и ''. 1L я просто целое число 1 как длинное целое число Python, '' означает, что вы передали None или пустую строку.

Поскольку вы вызвали обращение URL в своем шаблоне с помощью {% url remove_admin b.id u.id %}, вторым аргументом является значение u.id. Проверьте значение переменной u, похоже, у нее нет действительного атрибута id, так что это, вероятно, не то, что вы ожидаете (я думаю, это вообще не объект User)

0 голосов
/ 07 июля 2011

Вы не ссылаетесь на пользовательский объект так, как вы передаете его в контекст - вы передаете его как user, но в шаблоне вы используете u.id.

...