我正在尝试创建一个简单的论坛应用程序并收到此错误。我倾向于认为这可能与我的URLConf或我使用URL模板标记生成每个线程的URL的方式有关。
/forums/urls.py
# ex: /forums/general_forum
url(r'^(?P<forum_slug>[-\w\d]+)/$', views.forum, name='forum'),
# ex: /forums/general_forum-1/my_first_thread
url(r'^(?P<forum_slug>[-\w\d]+)/(?P<thread_slug>[-\w\d]+)/$', views.thread, name='thread'),
/forums/views.py
索引视图正常,论坛视图没有。
def index(request):
context = RequestContext(request)
forum_list = Forum.objects.order_by("sequence")
for forum in forum_list:
forum.url = slugify(forum.title) + "-" + str(forum.id)
context_dict = {'forum_list': forum_list}
return render_to_response('forums/index.html', context_dict, context)
@login_required
def forum(request, forum_slug):
context = RequestContext(request)
try:
forum = Forum.objects.get(slug=forum_slug)
threads = Thread.objects.filter(forum=forum)
context_dict = {'forum': forum,
'threads': threads}
except Forum.DoesNotExist:
pass
return render_to_response('forums/forum.html', context_dict, context)
这是我链接到index.html内的论坛视图的方式。
<a href={% url 'forum' forum.slug %}>{{ forum.title }}</a>
在forum.html中,这就是如何制定链接以查看线程内的帖子。这个:
<a href={% url 'forum' forum.slug %}/{% url 'thread' thread.slug %}>{{ thread.title }}</a>
错误。其中一个主题是'django'
NoReverseMatch at /forums/web-development/
Reverse for 'thread' with arguments '(u'django',)' and keyword arguments '{}' not found. 2 pattern(s) tried: ['forums/(?P<forum_slug>[-\\w\\d]+)/(?P<thread_slug>[-\\w\\d]+)/$', '$(?P<forum_slug>[-\\w\\d]+)/(?P<thread_slug>[-\\w\\d]+)/$']
在错误中,'thread'的url模板标记以红色突出显示,并指出在模板渲染过程中出现错误。这个错误对我来说似乎不清楚,我不确定这是否是我使用模板标签或其他方式的问题。
答案 0 :(得分:2)
您没有在您的网址配置所需的线程网址中传递论坛slugg
<a href={% url 'forum' forum.slug %}/{% url 'thread' thread.slug %}>{{ thread.title }}</a>
您也不应该同时使用这两个网址。相反,你想要的是:
<a href="{% url 'thread' forum.slug thread.slug %}">{{ thread.title }}</a>