首页 > 解决方案 > 如何在 django 中编写 urlpatterns?

问题描述

我有这种结构的 urls: ,page/section/subsection/articlewhere和是用户生成的 slug 名称。sectionsubsectionarticle

我该怎么写urlpatterns?我这样做,但可能存在更好的方法?

urlpatterns = [
    url(r'^$', views.index),
    url(r'^(?P<slug>[-\w]+)/$', views.section),
    url(r'^(?P<slug>[-\w]+)/(?P<subslug>[-\w]+)/$', views.subsection),
    url(r'^(?P<slug>[-\w]+)/(?P<subslug>[-\w]+)/(?P<articleslug>[-\w]+)/$', views.article)
]

我的看法:

def index(request):
    return render(request, 'MotherBeeApp/index.html', {})


def section(request, slug):
    sections = Section.objects.filter(page=slug)
    if sections:
        return render(request, 'MotherBeeApp/section.html', {'Sections': sections})
    else:
        return render(request, 'MotherBeeApp/404.html', status=404)


def subsection(request, slug, subslug):
    subsection = Section.objects.get(link_title=subslug)
    articles = Article.objects.filter(section=subsection.pk)
    page_title = subsection.title
    return render(request, 'MotherBeeApp/subsection.html', {'Articles': articles, 'PageTitle': page_title})


def article(request, slug, subslug, articleslug):
    article = Article.objects.get(link_title=articleslug)
    return render(request, 'MotherBeeApp/article.html', {'Article': article})

标签: pythondjangodjango-urls

解决方案


如果您使用的Django 版本早于Django 2.0< 2.0),那么您正在做正确的事情并且您已经在使用乐观的方式。但如果您的Django 版本晚于或等于,Django 2.0您可以编写 urlpatterns,如下所示


推荐阅读