python - 如何在 Django 中使用类别名称作为 url 后缀
问题描述
现在我的网址是:https ://mywebsite.com/newscategory_lists-5
我想将其更改为:https ://mywebsite.com/categoryname
这是我的模型:
class Category(models.Model):
name = models.CharField(max_length=40) # 分类名
class Meta:
verbose_name = "分类"
verbose_name_plural = verbose_name
def __str__(self):
return self.name
这是 urls.py:
path('category_lists-<int:category_pk>', views.categoryNewsList, name="category_news_list"),
这是我的view.py:
def categoryNewsList(request, category_pk):
category = get_object_or_404(Category, pk=category_pk)
news_list = News.objects.filter(category=category)
return render(request, "categories_list.html", {
'news_list': news_list,
'category': category
})
解决方案
试试这个,在 url.py
url(r'^(?P<link>[\w|-]+)/$', views.categoryNewsList, name='categoryNewsList')
视图.py
def categoryNewsList(request, link):
categories = {
"graphics-design": "GD",
"digital-marketing": "DM",
"video-animation": "VA",
"music-audio": "MA",
"programming-tech": "PT"
}
try:
foos = Category.objects.filter(name=categories[link])
return render(request, 'yoursite/home.html', locals())
except KeyError:
return redirect('yoursite/home.html')
并在您的 template.html 中放置链接:
<nav class="navbar navbar-expand-sm bg-light navbar-light justify-content-center">
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link" href="/">All categories</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/graphics-design">Graphics & Design</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/digital-marketing">Digital Marketing</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/video-animation">Video & Animation</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/music-audio">Music & Audio</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/programming-tech">Programming & Tech</a>
</li>
</ul>
推荐阅读
- hibernate - Spring Boot Data Jpa - @ManyToOne 加入 UUID id
- git - 暂时隐藏 Git 的特定更改
- javascript - 寻找js库推荐
- typescript - 如何在组件中使用 Angular 6 类装饰器?
- react-native - React-Native:如何在动画期间滚动时禁用 TouchableHighlight?
- javascript - 使用 jquery 在固定位置上可拖动和调整大小的 Div 元素
- angular - 如何将 http 请求响应映射到我在 TypeScript 中定义的对象
- android-graphview - 如何在 Android 的 GraphView 中更改 X 和 Y 轴数字的颜色?
- prepros - 我可以更改 Prepros 实时预览的服务器根目录吗?
- r - R - 返回 # 而不是 ifelse 上的文本