当前位置: 首页 > 知识库问答 >
问题:

Django-CMS apphooks菜单和反转

蒯华彩
2023-03-14

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

我的解决方案不完全有效。如果我转到这个url http://127.0.0.1:8000/en/gallery/1001/test/,其中“1001”是一个类别,“test”是gallery-name,我想检查类别是否存在,以及某个画廊是否属于这个类别。

下一个问题是,如果我想用get_absolute_url()方法获得gallery的完整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])

共有1个答案

百里俭
2023-03-14

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

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

因此,您需要提供两个参数,父段塞和库的段塞:

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

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

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'])
 类似资料:
  • 有些容器应用程序不提供新建菜单栏的方法,因此,需用 Visual Basic 创建菜单栏。在用 Visual Basic 创建了一个菜单栏之后,就可用容器应用程序接口或继续用 Visual Basic 定义该菜单栏。 在运行时间添加菜单栏 要在运行时间给应用程序添加一个菜单栏,可用CommandBars 集合的Add 方法并将MenuBar 参数指定为 True。以下示例将添加一个不可移动的菜单栏

  • 这个章节,我们会创建状态栏、菜单和工具栏。菜单是一组位于菜单栏的命令。工具栏是应用的一些常用工具按钮。状态栏显示一些状态信息,通常在应用的底部。 主窗口 QMainWindow提供了主窗口的功能,使用它能创建一些简单的状态栏、工具栏和菜单栏。 主窗口是下面这些窗口的合称,所以教程在最下方。 状态栏 状态栏是用来显示应用的状态信息的组件。 #!/usr/bin/python3 # -*- codin

  • 这个章节,我们会创建状态栏、菜单和工具栏。菜单是一组位于菜单栏的命令。工具栏是应用的一些常用工具按钮。状态栏显示一些状态信息,通常在应用的底部。 主窗口 QMainWindow 提供了主窗口的功能,使用它能创建一些简单的状态栏、工具栏和菜单栏。 主窗口是下面这些窗口的合称,所以教程在最下方。 状态栏 状态栏是用来显示应用的状态信息的组件。 #!/usr/bin/python3 # -*- codi

  • 菜单管理器允许为您的网站创建自定义菜单,并允许通过您的网站导航。 Step (1) - 在Joomla管理员中单击Menus → Menu Manager ,您将看到以下屏幕 - 您可以看到菜单和菜单项指向网站上的逻辑页面。 Step (2) - 要在您的网站上添加新菜单,请转到Menus → Menu Manager → Add New Menu ,如以下屏幕所示 - 单击“ Add New M

  • 问题内容: AFAIK,Python中没有curses菜单扩展,因此您必须推出自己的解决方案。我知道这个补丁http://bugs.python.org/issue1723038,但我不知道它的当前状态是什么。我在http://www.promisc.org/blog/?p=33上找到了一个很好的Python类,用于包装我想要的“ cmenu”,但我对此也有疑问。我想制作一个菜单,用户可以选择一个

  • 手表表面 手表表面告诉您的不仅仅是时间。您会在手表上获得最及时和相关的信息,包括您的活动状态、心肺负荷状态、心率和最新的训练课程。您可以向左或向右滑动,或者使用 UP(向上)和 DOWN(向下)按钮,滚动浏览表盘,并按下显示屏或 OK(确定)按钮,打开更多详细信息。 注意,表盘及其内容不可编辑。 您可以在手表设置中选择模拟和数字显示。 时间 显示时间和日期的基本手表表面   活动 手表面周围的圆圈

  • 手表表面 表盘不仅仅能够为您显示时间。您还可以在表盘上获取最及时、最相关的信息。您可在时间视图中选择需要表盘在屏幕上显示的内容,包括仅显示时间、日常活动、心肺负荷状态、持续心率追踪、最新训练课、昨晚的睡眠、FitSpark 训练指南、天气、每周摘要及您的姓名。 您可以向左或向右滑动,或者使用向上和向下按钮,滚动浏览表盘,并按下显示屏或 OK 按钮,打开更多详细信息。 仅显示时间 时间和日期。您可以

  • 我遵循了本教程https://codeburst.io/custom-drawer-using-react-navigation-80abbab489f7.当我在emulator上运行时,会出现以下错误: 不变冲突:此导航器缺少导航道具。在react navigation 3中,您必须直接设置应用程序容器 然后我更改了这段代码: 到 然后应用程序开始工作,但当我点击 什么都没发生(也没有错误)。我