注意在给出第一个答案之前,这个问题已经过大量编辑。
你好,
我对 django 还很陌生,如果我遗漏了一些明显的东西,我深表歉意。
我有一个如下所示的 urls.py 文件:
urlpatterns = patterns(
'',
(r'^$', 'faros.lantern.views.home_page'),
(r'^login/$', 'django.contrib.auth.views.login'),
(r'^logout/$', 'django.contrib.auth.views.logout'),
(r'^about/$', 'faros.lantern.views.about_page_index', {}, 'about_page_index'),
(r'^about/(?P<page_id>([a-z0-9]+/)?)$', 'faros.lantern.views.about_page', {}, 'about_page'),
)
看起来像这样的视图:
def about_page_index(request):
try:
return render_to_response('lantern/about/index.html', context_instance=RequestContext(request))
except TemplateDoesNotExist:
raise Http404
def about_page(request, page_id):
page_id = page_id.strip('/ ')
try:
return render_to_response('lantern/about/' + page_id + '.html', context_instance=RequestContext(request))
except TemplateDoesNotExist:
raise Http404
还有一个包含以下内容的模板:
<a href="{% url lantern.views.about_page_index %}">Contact</a>
<a href="{% url lantern.views.about_page page_id="contact" %}">Contact</a>
我收到此错误消息:
Caught an exception while rendering: Reverse for '<function about_page at 0x015EE730>' with arguments '()' and keyword arguments '{'page_id': u'contact'}' not found. The first reverse works fine (about_page_index), generating the correct URL without error messages.
我认为这是因为使用了 about_page view( request
) 的 request 参数,所以我需要在模板中生成 URL 时将其传入。问题是,我不知道如何找到它,四处寻找也无济于事。有任何想法吗?
谢谢,
多姆
ps 顺便说一句,在应用程序中处理静态“关于”类型页面的方法看起来是可怕的还是合理的?我本质上是在获取 URL 并假设模板的路径是about/
位之后的任何内容。这意味着我可以使静态页面看起来像应用程序的一部分,因此用户可以跳转到 about 部分,然后直接返回到它们的来源。评论/反馈这是 djangoic 还是愚蠢的赞赏!