python - 如何在 django 中编写 urlpatterns?
问题描述
我有这种结构的 urls:
,page/section/subsection/article
where和是用户生成的 slug 名称。section
subsection
article
我该怎么写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})
解决方案
如果您使用的Django 版本早于Django 2.0
(< 2.0),那么您正在做正确的事情并且您已经在使用乐观的方式。但如果您的Django 版本晚于或等于,Django 2.0
您可以编写 urlpatterns,如下所示。
推荐阅读
- amazon-web-services - 在 Jenkinsfile 中对 ECR 进行身份验证,以便我可以提取图像来运行构建?
- qt - 在 Qwebengineview 中禁用向左/向右/向上/向下滚动
- javascript - 我的 DatePicker 不适用于所有浏览器
- swift - 如何在渲染新图像时修复 MTKView 随机填充颜色
- javascript - 我不知道我是否把 egde 模板引擎正确或做错了什么
- laravel - laravel中如何调用“描述”来替换“parent_id”?
- amazon-ec2 - 正确离开 AWS EC2 实例
- amazon-web-services - 刷新 EC2 实例标签失败:SharedCredsLoad
- julia - 如何为正在开发的 Julia 项目下载和设置依赖项?
- laravel - Laravel 与 Litespeed 和 Apache2 和 ProxyPass 在登录后给出 403