将两个ID添加到我的URL调度程序

时间:2011-07-07 14:06:15

标签: python django django-models django-templates django-views

我对python / django比较新。我在通过urls.py发送ID时遇到问题。

我正在尝试将管理员添加到项目中的商家资料页面。

我的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,但我一直收到语法错误,我假设这与我的网址有关。

我的模板:

...
{% 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添加到我的网址。上面的例子不起作用。

谢谢大家,

史蒂夫

编辑:我提出的错误是:

渲染时捕获NoReverseMatch:反向'remove_admin',参数'(1L,'')'和关键字参数'{}'未找到。

2 个答案:

答案 0 :(得分:1)

我唯一看到错误的是{% if follow in b.admin.all %}你所发布的代码中的上下文中没有跟随变量。

如果您发布了错误或堆栈跟踪的更多详细信息,那将是最有帮助的。

编辑:好的,您的错误很有帮助:)

渲染时捕获NoReverseMatch:反向'remove_admin',参数'(1L,'')'和关键字参数'{}'未找到。

这意味着网址反转功能有两个参数1L''1L我只是整数1作为python长整数,''表示你传入None或空字符串。

由于您使用{% url remove_admin b.id u.id %}在模板中调用了网址反转,因此第二个参数是u.id的值。检查u变量的值,它似乎没有有效的id属性,所以它可能不是你所期望的(我猜它根本不是User个对象)

答案 1 :(得分:0)

您没有按照将其传递给上下文的方式引用用户对象 - 您将其作为user传递,但在模板中使用u.id