我正在观看一个YouTube教程,该教程展示了如何在所述对象的详细视图的URL中使用模型对象的id,并试图通过替换所有&id; id&而将相同的概念应用于slug字段#39;与' slug' (我的模型slug字段的名称)。然而,这恰好会出现错误 -
/ dashboard上的NoReverseMatch /'广告系列详情'同 争论'('',)'和关键字参数' {}'未找到。 1种模式 试过:['(?i)仪表板/广告系列/(?P / slug [ - \ w \ d] +)/ $']
views.py:
def campaign_detail(request, campaignprofile_slug):
if request.user.is_authenticated:
campaignprofile = get_object_or_404(CampaignProfile, slug=campaignprofile_slug)
return render(request, 'campaign-detail.html', {'campaignprofile': campaignprofile, 'slug': slug})
else:
return redirect('/users/login/next?=')
urls.py:
url(r'^campaigns/(?P<slug>[-\w\d]+)/$', views.campaign_detail, name='campaign-detail')
对于模型对象的models.py我试图显示:
class CampaignProfile(models.Model):
user = models.ForeignKey(UserModel, related_name='campaignprofile', on_delete=models.CASCADE, null=True)
campaign_title = models.CharField(max_length=50, verbose_name='Title')
slug = models.SlugField(unique=True, blank=True, null=True)
HTML模板a href标签:
<a href='{% url "campaign-detail" slug %}'></a>
这个问题的任何潜在解决方案都会非常棒,谢谢。
答案 0 :(得分:0)
两件事:
1)您在模板中的网址中传递的slug
似乎是一个空字符串,urls.py
中的代码无法处理导致错误的内容。
2)修复1后,您需要使slug
的正则表达式中的urls.py
变量与视图函数中的第二个参数具有相同的名称,防止出现其他错误。
答案 1 :(得分:0)
看起来您在返回的上下文中使用了错误的变量名称;
return render(request, 'campaign-detail.html', {'campaignprofile': campaignprofile, 'slug': slug})
将'slug': slug
重命名为'slug': campaignprofile_slug