Django - 模型对象的Slug字段未应用于URL

时间:2017-03-02 17:31:05

标签: python django

我正在观看一个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>

这个问题的任何潜在解决方案都会非常棒,谢谢。

2 个答案:

答案 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