我试图在django cms中实现一个画廊应用程序 .
我想要这样的网址:www.site-url.com/gallery/category/gallery-name
我的解决方案并不完全正常 . 如果我转到这个网址http://127.0.0.1:8000/en/gallery/1001/test/,其中"1001"是一个类别而"test"是gallery-name,我想检查一个类别是否存在以及一个图库是否属于这个类别 .
接下来的问题是,如果我想用 get_absolute_url()
方法获取图库的完整网址 . 我的urls.py实现不好,所以它不起作用 .
我的urls.py:
from django.conf.urls import patterns, url
from .views import GalleryListView, GalleryDetailView
urlpatterns = patterns('',
# List View
url(r'^(?P<parent_slug>[-\w]+)/(?P<slug>[-\w]+)/$', GalleryDetailView.as_view(), name="gallery_detail"),
url(r'^$', GalleryListView.as_view(), name="gallery_list"),
)
我的models.py:
class Category(Sortable):
parent = models.ForeignKey('self', blank=True, null=True)
name = models.CharField()
slug = AutoSlugField(populate_from='name')
def __unicode__(self):
return self.name
def get_absolute_url(self):
return "#"
class Gallery(Sortable):
name = models.CharField()
parent = models.ForeignKey(Category, blank=False, null=True)
slug = AutoSlugField(populate_from='name')
def __unicode__(self):
return self.name
def get_absolute_url(self):
return reverse('gallery_detail', args=[self.pk])
2 回答
您希望
get_absolute_url
方法匹配此网址格式,所以你需要提供两个参数,父slug和gallery的slug:
要在
GalleryDetailView
中获取正确的对象,您需要覆盖get_object
方法 . 您可以从self.kwargs
访问slu .最后我在这个youtube教程中找到了get_absolute_url()方法的解决方案https://www.youtube.com/watch?v=Dj8dhgmzlFM
我修改了models.py中的get_absolute_url(),如下所示:
其中“gallery”是cms_apps.py中的app_name:
然后我想检查是否存在类别以及图库是否属于此类别 .