gpt4 book ai didi

python - Django-CMS apphooks 菜单和反向

转载 作者:行者123 更新时间:2023-12-01 04:15:23 24 4
gpt4 key购买 nike

我正在尝试在 django cms 中实现一个图库应用程序。

我想要这样的网址:www.site-url.com/gallery/category/gallery-name

我的解决方案无法完全正常工作。如果我访问这个网址http://127.0.0.1:8000/en/gallery/1001/test/其中“1001”是一个类别,“test”是画廊名称,我想检查一个类别是否存在以及画廊是否属于该类别。

下一个问题是,如果我想使用 get_absolute_url() 方法获取画廊的完整 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"),
)

我的模型.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])

最佳答案

您希望您的 get_absolute_url 方法与此 URL 模式匹配,

url(r'^(?P<parent_slug>[-\w]+)/(?P<slug>[-\w]+)/$', GalleryDetailView.as_view(), name="gallery_detail"),

因此您需要提供两个参数,父级 slug 和图库的 slug:

class Gallery(Sortable):
def get_absolute_url(self):
return reverse('gallery_detail', args=[self.parent.slug, self.slug])

要在 GalleryDetailView 中获取正确的对象,您需要重写 get_object 方法。您可以从 self.kwargs 访问 slugs。

GalleryDetailView(DetailView):
...
def get_object(self, queryset=None):
if queryset is None:
queryset = self.get_queryset()
return queryset.get(parent__slug=self.kwargs['parent_slug'], slug=self.kwargs['slug'])

关于python - Django-CMS apphooks 菜单和反向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34360117/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com