如何将我的网址变成可读的名字?

时间:2015-09-28 13:45:38

标签: python django

我最近一直在创建一个Hackernews类型克隆,并且在添加更易读的URL时遇到了一些麻烦。我相信它从我所读过的内容中称为Slug。

基本上,我的网址读取的内容如下:localhost / 1 /,localhost / 2 /取自Category模型。而不是读取/ 1 /,/ 2 / etc,我更喜欢它取class_name字段并填充url。例如localhost / engineering,localhost / science。

这是我的类别模型:

models.py

class Category(models.Model):
    category_name = models.CharField(max_length = 50)
    created_at = models.DateTimeField(auto_now_add = True)
    updated_at = models.DateTimeField(auto_now = True)

    def __unicode__(self):
        return self.category_name

    class Meta:
        verbose_name_plural = "categories"

这是我目前的url.py:

url.py

url(r'^(?P<category_id>[0-9]+)/$', 'stories.views.category'),

和我的views.py:

views.py

def category(request, category_id=1):
    template = 'stories/category.html'
    category = Category.objects.get(id = category_id)
    return render_to_response(template, {
        'category': category
        })

我应该如何实施这样的事情?我已经阅读了有关Slugify的内容,但却无法让它正常运行。谢谢。

1 个答案:

答案 0 :(得分:2)

你的urls.py应该是,

url(r'^(?P<category_name>\w+)/$', 'stories.views.category'),

虽然,views.py应该是类似的,

def category(request, category_name):
    template = 'stories/category.html'
    category = Category.objects.get(category_name = category_name)
    return render_to_response(template, {
        'category': category
        })

以上,如果你没有使用slugified category_name可能会有效。如果这样做,那么请使用this stack overflow answer

中提到的模型中的slug字段
相关问题