首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在一个视图中显示多个模型,并获取每个后django的slug url

在Django中,可以通过使用视图来显示多个模型,并获取每个模型的slug URL。下面是一个实现这个功能的示例:

首先,需要定义模型。假设我们有两个模型:Post和Category。

代码语言:txt
复制
from django.db import models
from django.urls import reverse

class Category(models.Model):
    name = models.CharField(max_length=100)
    slug = models.SlugField(unique=True)

    def get_absolute_url(self):
        return reverse('category_detail', args=[self.slug])

class Post(models.Model):
    title = models.CharField(max_length=100)
    content = models.TextField()
    slug = models.SlugField(unique=True)
    category = models.ForeignKey(Category, on_delete=models.CASCADE)

    def get_absolute_url(self):
        return reverse('post_detail', args=[self.slug])

接下来,需要创建视图来显示多个模型。可以使用Django的ListView来实现这个功能。

代码语言:txt
复制
from django.views.generic import ListView

class PostCategoryView(ListView):
    model = Post
    template_name = 'post_category.html'
    context_object_name = 'posts'

    def get_queryset(self):
        category_slug = self.kwargs['category_slug']
        category = Category.objects.get(slug=category_slug)
        return Post.objects.filter(category=category)

在上面的代码中,我们使用ListView来显示Post模型,并通过category_slug参数来过滤出特定分类的帖子。

然后,需要创建模板来渲染视图。

post_category.html模板示例:

代码语言:txt
复制
{% for post in posts %}
    <h2><a href="{{ post.get_absolute_url }}">{{ post.title }}</a></h2>
    <p>{{ post.content }}</p>
{% endfor %}

最后,需要定义URL模式来映射视图。

代码语言:txt
复制
from django.urls import path
from .views import PostCategoryView

urlpatterns = [
    path('category/<slug:category_slug>/', PostCategoryView.as_view(), name='category_detail'),
]

在上面的代码中,我们定义了一个URL模式,将category_slug作为参数传递给PostCategoryView视图。

现在,当访问类似于/category/my-category/的URL时,将会显示该分类下的所有帖子。

这是一个简单的示例,展示了如何在一个视图中显示多个模型,并获取每个模型的slug URL。根据实际需求,你可以根据这个示例进行扩展和定制。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Django内置通用类视图及实例

参数,如果找到了这个参数,该方法使用这个参数值执行一个基于逐渐查询.如果这个参数没有找到,该方法查找slug_url_kwarg参数,使用slug_field字段执行针对slug查询.当query_pk_and_slug...显示表单视图,验证错误时,重新显示表单显示错误信息;成功时,重定向到一个URL....方法: get_success_url():决定在表单成功验证重定向到URL,默认返回success_url. form_valid(form):表单验证成功调用该方法(注意并没有对数据进行操作...显示确认页面删除现有对象视图.仅当请求方法为POST时,才会删除给定内容.如果此视图是通过GET提取,它将显示一个确认页面,其中包含POST到同一网址表单....根据报错提示,我们可以直接在视图下给success_url参数赋值,或在模型中去定义get_absolute_url()方法,去设置成功跳转url

2.9K40

Django内置通用类视图CBV及示例

参数,如果找到了这个参数,该方法使用这个参数值执行一个基于逐渐查询.如果这个参数没有找到,该方法查找slug_url_kwarg参数,使用slug_field字段执行针对slug查询.当query_pk_and_slug...显示表单视图,验证错误时,重新显示表单显示错误信息;成功时,重定向到一个URL....方法: get_success_url():决定在表单成功验证重定向到URL,默认返回success_url. form_valid(form):表单验证成功调用该方法(注意并没有对数据进行操作...显示确认页面删除现有对象视图.仅当请求方法为POST时,才会删除给定内容.如果此视图是通过GET提取,它将显示一个确认页面,其中包含POST到同一网址表单....根据报错提示,我们可以直接在视图下给success_url参数赋值,或在模型中去定义get_absolute_url()方法,去设置成功跳转url

3.2K10
  • python-Django-URL 路由(二)

    Django URL路由示例 下面是一个简单Django应用程序示例,它使用URL路由来处理客户端请求。...第三个URL模式是“post/slug:slug/”,它将请求映射到我们之前定义post_detail视图函数,使用一个命名捕获组来表示文章slug。...最后一个URL模式是“post/slug:slug/edit/”,它将请求映射到我们之前定义post_edit视图函数,使用一个命名捕获组来表示文章slug。 接下来,我们定义这些视图函数。...如果请求方法是POST,视图函数将获取用户提交文章标题和内容,更新现有的Post对象,然后将用户重定向到更新文章详细页面。...如果请求方法是GET,视图函数将渲染一个包含编辑现有文章表单HTML模板。 最后一个视图函数是PostList,它显示所有博客文章列表,允许用户创建新博客文章。

    82120

    Django 面试题

    slug 目的是为了 url 更易读(易于 SEO),使用方法也简单,比如 urls.py 中 path('articles//', views.article_detail),...它是需要时添加到类中功能包。实际使用中通过类继承将功能添加到所需要类中。 Django 中,这些软件包用于基于类图中。...你唯一需要决定是,父模型是否是一个独立自主,同样在数据库中创建数据表模型,还是一个只用来保存子模型共有内容,并不实际创建数据表抽象模型。...如果你网站需要国际化,那么会用到这个命令,执行该命令Django 会在当前路径生成一个 message file,里面保存了该 web 项目需要被翻译字符串。...完成Django 会根据用户语言偏好,使用每种可用语言对网页进行即时翻译。 Django 国际化钩子默认是开启,这意味着框架某些位置存在一些 i18n 相关开销。

    1.6K30

    Django路由控制URL详解

    通俗讲,就是你可以自定义项目入口url是哪个文件! 加载该模块寻找可用urlpatterns。 它是django.conf.urls.url()实例一个列表。...依次匹配每个URL模式,与请求URL相匹配一个模式停下来。也就是说,url匹配是从上往下短路操作,所以url列表中位置非常关键。...2003/03/building-a-django-site/ 将匹配最后一个调用views.article_detail(request, year=2003, month=3, slug="building-a-django-site...图中接收参数时一定要小心。 3.3 有名分组 上面的示例使用简单、没有命名正则表达式组(通过圆括号)来捕获URL值并以位置 参数传递给视图。...Django 项目时,一个常见需求是获得URL 最终形式,以用于嵌入到生成内容中(视图中显示给用户URL等)或者用于处理服务器端导航(重定向等)。

    1.1K20

    Django 2.0 新款URL配置详解

    Django2.0发布,很多人都拥抱变化,加入了2行列。...默认情况下,捕获到结果保存为字符串类型,不包含/这个特殊字符; 匹配模式最开头不需要添加/,因为默认情况下,每个url都带一个最前面的/,既然大家都有的部分,就不用浪费时间特别写一个了。...类型 slug:可理解为注释、后缀、附属等概念,是url最后一部分解释性字符。...04d' % value 写完类URLconf 中注册,使用它,如下所示,注册了一个yyyy: from django.urls import register_converter, path...图中接收参数时一定要小心。 五、总结 除了上面的部分,Django2.0路由系统其它知识点和Django1.11基本都是相同,就是写法上面有那么点小小区别。

    1.3K50

    Django开发网页计数器统计页面浏览次数

    实际Web开发过程中,我们经常要统计显示一个页面的浏览次数。今天我们会以博客例子,教你如何利用Django开发网页计数器,统计显示一篇文章浏览次数。...第一步 建立APP,设置URL 我们创建一个叫demo项目,利用python manage.py startapp blog创建一个名叫blogAPP,并把它加入到settings.py中INSTALLED_APP...我们定义了一个叫views字段,用来记录浏览次数。我们还定义了一个叫viewed方法,使views每次访问增加1。...第三步 配置URL 我们只设计了一个URL(例如/blog/article/6/)。你需要在blog文件夹里新建urls.py,添加如下代码。...ArticleDetailView通过URL传递过来参数(id=6)获取当前文章对象,通过模板blog/article_detail.html显示

    2.1K20

    django2实战2.创建博客应用创建应用文章表字段设计激活应用开启后台将post模型注册到后台自定义文章显示字段增加可选操作

    继上篇 django2实战1.初识django 创建应用 上篇创建了一个项目,项目相当于站点,应用即是独立功能模块。比如:淘宝是一个完整网站,即是一个项目。...而淘宝下聚划算属于一个应用 django中,一个应用是由模型、视图、模板以及url配置组成。...,每个应用都必须有一个文件文件 ├── tests.py # 测试文件 └── views.py # 应用逻辑都写在view层,包括接收http请求,处理逻辑,返回响应 1 directory, 7...files 文章表字段设计 一个博客最重要数据就是文章,接下来我们设计文章字段 一篇文章字段有:标题、摘要、作者、内容、发布时间、创建时间、更新时间、状态 数据对应模型,即blogmodels.py...类型,max_length指定了该字段最大长度 slug: url标识,文章url格式为:yyyy/mm/dd/slug/, unique_for_date 表示slug与日期组合是惟一,即每篇文章

    1.1K30

    django 1.8 官方文档翻译: 3-1-1 URL调度器

    Django 依次匹配每个URL 模式,与请求URL 匹配一个模式停下来。...URL 反向解析 使用Django 项目时,一个常见需求是获得URL 最终形式,以用于嵌入到生成内容中(视图中显示给用户URL等)或者用于处理服务器端导航(重定向等)。...更高层与处理Django 模型实例相关代码中:使用get_absolute_url() 方法。...类似地,它还允许你一个应用有多个实例部署情况下反查URL。换句话讲,因为一个应用多个实例共享相同命名URL,命名空间将提供一种区分这些命名URL 方法。...一个站点上,正确使用URL 命名空间Django 应用可以部署多次。例如,django.contrib.admin 具有一个AdminSite 类,它允许你很容易地部署多个管理站点实例。

    1.3K20

    django 1.8 官方文档翻译:7-3 Django管理文档生成器

    Django管理文档生成器 Djangoadmindocs应用从模型、视图、模板标签以及模板过滤器中,为任何INSTALLED_APPS中应用获取文档。...admindocs页面的models部分描述了系统中每个模型,以及所有可用字段和方法(不带任何参数)。...视图参考 你站点中每个URL都在·页面中有一个单独记录,点击提供URL会向你展示相应视图。有一些有用东西,你可以在你视图函数·中记录: 视图所做工作一个简短描述。...模板参考 虽然admindocs 并不包含一个地方来保存模板,但如果你结果页面中使用:template:`path/to/template.html`语法,会使用Django模板加载器来验证该模板路径...这是一个非常便捷方法,来检查是否存在特定模板,以及展示模板文件系统何处存放。

    78530

    Django url 反向解析 和 命令空间

    Django 加载该路由解析模块,寻找可用urlpatterns。这个urlpattens是一个Python列表,该列表每个元素都是django.conf.urls.url()一个实例。...Django 依次匹配该列表中每个URL模式,遇到第一个与请求URL相匹配模式时停下来。...URL 反向解析¶ 创建Django 项目时,一个常见需求是如何获得URL最终形式以嵌入到所生成Content中(即嵌入到视图中、或URL资源中,或者显示给用户URL等)或者用于处理服务器端导航流...更高层与处理Django 模型实例相关代码中:使用get_absolute_url() 方法。...换句话讲,因为一个应用多个实例共享相同命名URL,命名空间提供了一种区分这些命名URL 方法。 一个站点上,正确使用URL命名空间Django 应用可以部署多次。

    2.4K30

    网站功能——添加文章编辑页面,支持 markdown 编辑器实时预览编辑

    功能转需求 需求澄清 针对这个功能,我需要考虑几个需求点如下: 文章显示页面增加一个跳转地址,可以跳转到文章编辑页面 创建一个文章编辑页面,打开之后能显示文章内容,并且直接放到 markdonw...,需要完成上述功能, Django 里面应该怎么实现。...return obj 这里直接使用内置视图类,比较方便,然后就是获取实例时候需要进行用户判断,也就是非作者及超管无权访问,直接返回404页面就行。...第一个参数是所有 django 请求都应该带上 csrf 验证,这个不清楚可以去查一下相关作用,第二个参数是更新接口地址,第三个参数是文章 slug 字段,这个字段是唯一,所以可以用来确定文章...总结 本篇文章主要分享了创建一个文章内容编辑页面的过程,主要使用到了 Django 类视图、权限判断、POST 请求视图、ajax 请求、实例更新等 Django 相关知识点。

    36410

    小白学Django第五天| 视图View初步使用

    小白学Django第三天| 一文带你快速理解模型Model 小白学Django第四天| Django后台管理及配置MySQL数据库 持续更新中......Django中,通过浏览器去请求一个页面时,此时使用视图函数来处理这个请求,视图函数处理完成之后,就要浏览器返回页面内容。 1. 定义视图函数 如何来定义一个视图函数呢?...视图函数定义view.py文件中: 视图函数必须带一个参数request,进行处理之后,需要返回一个HttpResponse类对象,里面包含参数就是返回给浏览器显示内容。...2.URL配置 django2.0 以上版本中,默认使用是path转换器,我们来通过一个小例子来看看DjangoUrl配置。...捕获值可以选择性地包含转换器类型。比如,使用 来捕获整型参数。如果不包含转换器,则会匹配除了 / 外任何字符。 这里不需要添加反斜杠,因为每个 URL 都有。

    58911
    领券