Django5.1建站-流程及语句==环境:windows10专业版+python版本3.12【请先安装】+pycharm版本2024.1.4【请先安装】第三天 写作时间:2024年8月11日

19、一个完整的代码,可以从头到尾的先跑一遍,再从头来过,至少还需要学50次,很多内容还没有接触到!
Django按id显示内容列表的详情页
在Django中,你可以使用类视图DetailView来根据id展示内容的详情页。以下是一个简单的例子:

---111--- 首先,在你的models.py中定义你的【模型】(完整代码):

from django.db import models #引入django.db.models模块

#这个例子中,我们定义了两个模型类:UserInfo和PostInfo。
# UserInfo用于存储用户信息,包括用户名、密码和电子邮件地址。(后改成”栏目类别“)
# PostInfo用于存储帖子信息,包括发帖用户、标题、内容和创建时间。(后改成”内容列表“)两个模型通过ForeignKey字段关联,确保每个帖子都关联到一个用户信息。
# 输入如下模型语句后,在终端中输入    python manage.py makemigrations     #生成迁移文件
#                                                        python manage.py migrate            #迁移数据库,创建新表
# 就可以在 数据库sqlite3 中创建 myapp001_userinfo 和 myapp001_postinfo 这2个表及里面的字段

# 用户信息(栏目类别)模型
class UserInfo(models.Model):
    username = models.CharField(max_length=30,verbose_name='栏目类别')   #在二级目录中显示”栏目类别“的中文,其他类似
    #verbose_name='用户名称' ,username在后台显示成中文“用户名称”
    #password = models.CharField(max_length=30,verbose_name='密码')
    #email = models.EmailField(verbose_name='邮箱地址')

    def __str__(self):
        return self.username

    class Meta:    #这3条语句,数据模型在后台管理列表显示为中文列表
        verbose_name = ('栏目类别')
        verbose_name_plural = ('栏目类别')

# 帖子信息(内容列表)模型
class PostInfo(models.Model):
    user = models.ForeignKey(UserInfo, on_delete=models.CASCADE,verbose_name='栏目类别')
    title = models.CharField(max_length=50,verbose_name='标题')
    content = models.TextField(verbose_name='内容')
    create_time = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.title

    class Meta:    #这3条语句,数据模型在后台管理列表显示为中文列表
        verbose_name = ('内容列表')
        verbose_name_plural = ('内容列表')

---222--- 然后,在views.py中定义一个【视图】来展示详情页:

from django.shortcuts import render
from myapp001.models import UserInfo
from myapp001.models import PostInfo
from django.views.generic import DetailView #详情页使用
# Create your views here.

def UserInfo_list(request):   #栏目列表函数
    UserInfos = UserInfo.objects.all()  #列出数据库中UserInfo表的所有数据
    return render(request, 'UserInfo.html', {'UserInfos': UserInfos})  #返回并在模板中渲染+赋值

def PostInfo_list(request):   #内容列表函数,同上
    PostInfos = PostInfo.objects.all()
    return render(request, 'PostInfo.html', {'PostInfos': PostInfos})

class PostInfoDetailView(DetailView):  #详情页使用
    model = PostInfo
    template_name = 'PostInfo_detail.html'  # 确保你有这个模板文件【请手动建立,放在myapp001目录中的Templates目录中】

---333--- 接下来,在urls.py中添加一个【URL模式来映射】到这个视图:

from django.contrib import admin
from django.urls import path
from myapp001.views import UserInfo_list
from myapp001.views import PostInfo_list
from django.conf.urls import include
from myapp001.views import PostInfoDetailView  #详情页使用
urlpatterns = [
    path('admin/', admin.site.urls),
    #path('', admin.site.urls),
    #path('myapp001/', view.UserInfo_list, name='UserInfo_list'),
    path('userinfos/', UserInfo_list, name='UserInfo_list'),     #输入http://localhost:8000/userinfos显示栏目列表
    #path('',include('myapp001.urls'))
    path('', PostInfo_list, name='PostInfo_list'),  #设置默认首页为内容列表,即打开http://localhost:8000后,可看到数据库中的内容,点解链接并显示详情页。
    path('PostInfo/<int:pk>/', PostInfoDetailView.as_view(), name='PostInfo-detail'),  #详情页链接
]

---444--- 最后,在PostInfo_detail.html【模板放在Templates目录中】中,你可以使用模型的属性来展示详情:

<!DOCTYPE html>
<html>
<head>
    <title>{{ object.title }}</title>
</head>
<body>
    PostInfo的详情页
    <h1>{{ object.title }}</h1>
    <p>{{ object.content }}</p>
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值