【问题标题】:Django: Model parameter in the URL template tagDjango:URL模板标签中的模型参数
【发布时间】:2013-09-19 06:10:09
【问题描述】:

我想为我的通用视图使用 url 模板标签。

我对此进行了很多搜索,但没有找到我想要的,但这似乎是一个简单的问题。

我将使用Django book, Making a View Generic 使用过的示例:

# urls.py

from django.conf.urls.defaults import *
from mysite import models, views

urlpatterns = patterns('',
    (r'^events/$', views.object_list, {'model': models.Event}),
    (r'^blog/entries/$', views.object_list, {'model': models.BlogEntry}),
)

# views.py

from django.shortcuts import render

def object_list(request, model):
    obj_list = model.objects.all()
    template_name = 'mysite/%s_list.html' % model.__name__.lower()
    return render(request, template_name, {'object_list': obj_list})

所以,我对两个 URL 有一个视图,我的问题是:如何为这两个 URL 使用 django URL 模板标签?

我想在 html 模板中做这样的事情:

href={% url "mysite.views.object_list" model="Event" %}
href={% url "mysite.views.object_list" model="BlogEntry" %}

谢谢!

【问题讨论】:

    标签: django django-models django-urls django-templates


    【解决方案1】:

    您需要为 url 定义名称:

    (r'^events/$', views.object_list, {'model': models.Event}, name='my_name'),
    

    并使用它来代替视图路径:

    href={% url "my_name" model="Event" %}
    

    【讨论】:

    • 是的,就是这样,只有两件事:名字就够了,现在不需要参数了。 href={% url "my_name" %} 和我的大错误以及为什么它对我不起作用, url 的名称,有必要使用 url 函数: url(r'^events/$', views.object_list , {'model': models.Event}, name='my_name'),
    猜你喜欢
    • 2011-12-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-26
    • 2016-12-25
    • 1970-01-01
    • 1970-01-01
    • 2018-10-21
    • 2016-03-24
    相关资源
    最近更新 更多