NoReverseMatch错误Django

时间:2017-08-01 17:16:32

标签: python django reverse django-urls

我有以下型号:

body = gson.fromJson(reader, ...);

在我的主urls.py中,我有以下网址:

class UserPlaceReview(models.Model):
    place = models.ForeignKey(PlaceReview)
    review = models.TextField()

    def __str__(self):
        return self.review

class PlaceReview(models.Model):
    name      = models.CharField(max_length=150)
    location  = models.CharField(max_length=250)
    image     = models.ImageField(upload_to = image_upload_location,null=True, blank=True)
    category  = models.ForeignKey(Categories)
    slug =      models.SlugField()
    timestamp = models.DateTimeField(auto_now_add=True)
    updated   = models.DateTimeField(auto_now=True)


    def __str__(self):
        return self.name

    def get_absolute_url(self):
        return reverse("categories:detail", kwargs={"slug": self.slug})

在我的app urls.py中我有以下网址:

url(r'^categories/', include('places.urls', namespace='categories')),

在模板中,我试图做这样的事情,这给了我一个无反向匹配错误:

url(r'^(?P<slug>[\w-]+)/review/$', user_place_review, name='user_review'),

链接到网址的视图是:

 <a class="btn btn-primary btn-lg" href="{% url 'categories:user_review' %}">Write A Review!</a>

我无法找到错误原因。

2 个答案:

答案 0 :(得分:2)

更改此行

 <a class="btn btn-primary btn-lg" href="{% url 'categories:user_review' %}">Write A Review!</a>

 <a class="btn btn-primary btn-lg" href="{% url 'categories:user_review' slug=placereview_instance.slug %}">Write A Review!</a>

其中placereview_instance是您的模型对象。您在user_review文件中使用slug关键字参数定义了urls.py的URL。所以Django正在寻找模板中该url中的关键字参数slug。它找不到相同的内容,因此它没有找到反向匹配。

另外,您已经在get_absolute_url中定义了models.py。同样,您可以直接使用其他方法进行审核,然后在模板中使用

 <a class="btn btn-primary btn-lg" href="{{ placereview_instance.get_review_absolute_url }}">Write A Review!</a>

答案 1 :(得分:0)

您必须为网址的args赋值。你的模板应该是这样的

<a class="btn btn-primary btn-lg" href="{% url 'categories:user_review' slug='your_parameter' %}">Write A Review!</a>