Python 如何使用slug来形成url
我的Python 如何使用slug来形成url,python,django,url,slug,Python,Django,Url,Slug,我的models.py文件如下所示 from django.db import models from django.template.defaultfilters import slugify class Entertainmentblog(models.Model): slug = models.SlugField(max_length=100) body = models.TextField() posted = models.DateTimeField('da
models.py
文件如下所示
from django.db import models
from django.template.defaultfilters import slugify
class Entertainmentblog(models.Model):
slug = models.SlugField(max_length=100)
body = models.TextField()
posted = models.DateTimeField('date published')
img_url0 = models.CharField(max_length=100)
img_alt0 = models.CharField(max_length=100)
title1 = models.CharField(max_length=100)
title2 = models.CharField(max_length=100)
def save(self):
super(Entertainmentblog, self).save()
self.slug = '%i-%s' % ( self.id, slugify(self.slug) )
super(Entertainmentblog, self).save()
from django.conf.urls import patterns, url
from entertainment import views
urlpatterns = patterns('',
url(r'^$', views.ListView.as_view(), name='index'),
url(r'^(?P<slug>[^\.]+),(?P<id>\d+)/$', views.DetailView.as_view(), name='article'),
)
我的appurl.py
文件如下所示
from django.db import models
from django.template.defaultfilters import slugify
class Entertainmentblog(models.Model):
slug = models.SlugField(max_length=100)
body = models.TextField()
posted = models.DateTimeField('date published')
img_url0 = models.CharField(max_length=100)
img_alt0 = models.CharField(max_length=100)
title1 = models.CharField(max_length=100)
title2 = models.CharField(max_length=100)
def save(self):
super(Entertainmentblog, self).save()
self.slug = '%i-%s' % ( self.id, slugify(self.slug) )
super(Entertainmentblog, self).save()
from django.conf.urls import patterns, url
from entertainment import views
urlpatterns = patterns('',
url(r'^$', views.ListView.as_view(), name='index'),
url(r'^(?P<slug>[^\.]+),(?P<id>\d+)/$', views.DetailView.as_view(), name='article'),
)
我该如何纠正这一点?哦,你的观点存在严重问题: 第一: 应该是
class ListView(generic.ListView)
看
第二:
slug
和id
必须是视图的类成员,以便您可以像这样重新定义视图:
class ListView(generic.ListView):
template_name = 'entertainment/index.html'
context_object_name = 'latest_article_list'
slug = None
id = None
def get_queryset(self):
return Entertainmentblog.objects.order_by('-posted')[:25]
第三:
您正在将派生类命名为其父类。我不知道这样做的含义,但肯定不是一个好的做法
最后:
您得到的错误是因为
views.DetailView.as_view()
(请记住DetailView
是您的派生类)返回的视图未接收到您通过url传递的参数。检查您的url,我可以在抱怨的错误和参数(u'what-is-casting',)
中看到,但是没有id
。例如,它应该类似于(u'what-is-cing','4')
异常值:对于带有参数的'article'(u'what-is-cing',)'和关键字参数'{}'未找到。尝试了1个模式:[u'entertainment/(?P[^\\.]+),(?P\\d+/$”]这似乎与视图相关。很抱歉,我没有理解您的意思。在何处添加视图名称?我也很抱歉,我以前的评论错误,并已将其更改。