【问题标题】:Django named urls, generic views?Django命名的url,通用视图?
【发布时间】:2010-10-13 07:46:24
【问题描述】:

所以,这是我的 urls.py 之一

urlpatterns = patterns('items.views',
    url(r'^(?P<item_id>[\d+])/$', 'view_listing', name="item_view"),
)

在我的模板中,我可以这样做:&lt;a href="{% url item_view 1 %}"&gt;here&lt;/a&gt;,我会得到一个指向正确页面的链接。一切都很好!

但是,这里还有一个

urlpatterns = patterns('django.views.generic.list_detail',
    (r'^(?P<slug>[\w-]+)/$', 'object_detail', dict(page_info, slug_field='slug'), "page_view"),
)

但是在我的模板中,如果我尝试这个:&lt;a href="{% url page_view slug='TermsAndConditions' %}"&gt;Terms and Conditions&lt;/a&gt; 或这个&lt;a href="{% url page_view 'TermsAndConditions' %}"&gt;Terms and Conditions&lt;/a&gt; 它会出现这个错误:

TemplateSyntaxError at /

Could not parse the remainder: ''TermsAndConditions '' from ''TermsAndConditions ''

有谁知道是否可以使用带有通用视图和url 模板标签的命名网址?还是让它与通用视图一起工作的正确方法?

谢谢。

【问题讨论】:

    标签: django django-templates django-urls


    【解决方案1】:

    解决办法是

    <a href='{% url page_view slug="TermsAndConditions" %}'>Terms and Conditions</a>
    

    【讨论】:

    • 谁能想到像更改引号类型这样简单的解决方案就可以解决问题。我什至不再在该网站上工作了,但无论如何,我做了一个快速测试,它奏效了。谢谢。
    【解决方案2】:

    Django 中的模板系统只支持双引号,这就解释了你在使用单引号时遇到的语法错误。你需要这样做

    {% url page_view slug="TermsAndConditions" %}
    

    如果你省略了引号,Django 你指的是一个名为TermsAndConditions变量

    【讨论】:

    • 我以前也试过这个,但它也不起作用。我收到此错误:TemplateSyntaxError at / Caught an exception while rendering: Reverse for 'listitstolen.page_view' with arguments '()' and keyword arguments '{'slug': u'TermsAndConditions'}' not found.
    • 奇怪。这对我有用——我将 page_view 的 URLconf 放在一个空项目中,并在 shell 中尝试了模板代码——反之亦然。尝试在 URLconf 中使用 url() (尽管我猜它没有区别......)并尝试使用位置版本: {% url page_view "TermsAndConditions" %}
    • 还是不行。不知道它是如何为您而不是我工作的,但这不会是编程中第一次出现这种情况。我想知道 out 实现之间有什么不同。你能够使用通用详细视图使其工作吗?这是我的代码dpaste.com/hold/15428
    【解决方案3】:

    不要在字符串“TermsAndConditions”两边加上引号:

    {% url page_view slug=TermsAndConditions %}
    

    【讨论】:

    • 这给了我一个不同的错误。 TemplateSyntaxError at / Caught an exception while rendering: Reverse for 'listitstolen.page_view' with arguments '()' and keyword arguments '{'slug': ''}' not found.
    • 抱歉,请使用双引号。我认为这是您尝试使用的变量。
    • 我以前也试过这个,但它也不起作用。我收到此错误:TemplateSyntaxError at / Caught an exception while rendering: Reverse for 'listitstolen.page_view' with arguments '()' and keyword arguments '{'slug': u'TermsAndConditions'}' not found.
    猜你喜欢
    • 2019-08-04
    • 1970-01-01
    • 1970-01-01
    • 2017-01-21
    • 2019-01-25
    • 2014-03-26
    • 2011-09-19
    • 1970-01-01
    • 2012-10-13
    相关资源
    最近更新 更多