Django命名的url,通用视图?
Posted
技术标签:
【中文标题】Django命名的url,通用视图?【英文标题】:Django named urls, generic views? 【发布时间】:2010-10-13 07:46:24 【问题描述】:所以,这是我的 urls.py 之一
urlpatterns = patterns('items.views',
url(r'^(?P<item_id>[\d+])/$', 'view_listing', name="item_view"),
)
在我的模板中,我可以这样做:<a href="% url item_view 1 %">here</a>
,我会得到一个指向正确页面的链接。一切都很好!
但是,这里还有一个
urlpatterns = patterns('django.views.generic.list_detail',
(r'^(?P<slug>[\w-]+)/$', 'object_detail', dict(page_info, slug_field='slug'), "page_view"),
)
但是在我的模板中,如果我尝试这个:<a href="% url page_view slug='TermsAndConditions' %">Terms and Conditions</a>
或这个<a href="% url page_view 'TermsAndConditions' %">Terms and Conditions</a>
它会出现这个错误:
TemplateSyntaxError at /
Could not parse the remainder: ''TermsAndConditions '' from ''TermsAndConditions ''
有谁知道是否可以使用带有通用视图和url
模板标签的命名网址?还是让它与通用视图一起工作的正确方法?
谢谢。
【问题讨论】:
【参考方案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.以上是关于Django命名的url,通用视图?的主要内容,如果未能解决你的问题,请参考以下文章
Django - 基于类的通用视图 - “没有要重定向到的 URL”
urls.py 中的 Django 时区逻辑和通用视图引发错误,但它是视图、字段还是我?
带有更新的 slug 的 Django 通用视图 UpdateView 重定向 URL