python - Django-CMS apphooks 菜单和反向

标签 python django python-2.7 django-cms

我正在尝试在 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/

相关文章:

python - 从数据框中删除顶行

python - 类型为 'f' 的对象的未知格式代码 'unicode'

python - Matplotlib 曲面图不直观的三角剖分

python - 如何在 django 中进行管理操作来下载用户的 pdf 文件

Python:如何从当前文件位置更改文件中的位置?

python - DRF- Django Rest Framework re_path 查询参数 - "Method\"GET\"not allowed."

python - 无法在 Python 中反转列表,获取 "Nonetype"作为列表

python - elastic beanstalk 上的 wsgi 用户权限

python - Django 从 ImageField 下载图像

python - 适用于 Windows 10 的 Anaconda (Python 2.7) 出现内核错误。Spyder IDE 控制台错误