Django框架下为单篇文章设置独立URL访问路径是否可行?
可以实现,Django的路由匹配遵循从上到下优先匹配的规则,你只需要在通用文章路由之前新增一条指定路径的单独规则即可。
具体修改步骤
- 调整项目根目录的
urls.py配置,新增自定义路由放在原有include规则之前:
from mysite.articles.views import article_detail # 导入你现有文章详情页的视图函数 urlpatterns = [ # 新增单篇文章的自定义路径规则 url(r'^chosen-article/$', article_detail, kwargs={'slug': 'some-article'}, name='chosen_article'), # 保留原有通用文章路由 url(r'^articles/', include('mysite.articles.urls')), ]
注意:
kwargs里的参数名slug需要和你原有文章详情路由的参数名保持一致,参数值填你要特殊配置的那篇文章的原有slug即可。
- (可选)配置旧路径301跳转
如果要避免原来的/articles/some-article路径出现404、影响搜索引擎收录,可以在文章详情视图中增加判断:当访问的是指定文章的旧路径时,自动跳转到新的自定义路径。
注意事项
- 自定义路由必须放在通用articles路由的前面,否则会先被通用规则匹配走,自定义规则不生效
- 后续需要修改该文章的访问路径时,直接修改这条自定义路由的正则匹配部分即可,不需要修改文章本身的slug字段
内容的提问来源于stack exchange,提问作者Wojciech K
相关产品推荐
相关产品推荐

