diango路由分发

1个Django 项目里面有多个APP目录大家共有一个 url容易造成混淆,于是路由分发让每个APP的拥有了自己单独的url

例如:将blog应用的url分离出来

1、进入mysite目录,修改urls.py文件

from django.contrib import admin
#分离路由,需要导入include方法
from django.urls import path,re_path,include

urlpatterns = [
    path('admin/', admin.site.urls),
    #注意include的是字符串形式的 文件路径
    path('blog/', include('blog.blog_urls')),
]

进入blog目录,创建文件blog_urls.py,内容如下:

from django.urls import path,re_path,include
from blog import views

urlpatterns = [
    re_path('index/(\d+)/', views.index),  # 分页
    re_path('detail/(\d+)/', views.detail),  # 详细信息
]

2、业务处理函数代码 mysite/blog/views.py,内容如下:

from django.shortcuts import render,HttpResponse

# 临时存放一些数据,生产环境中,这些数据都是保存在数据库中
USER_LIST = []
for item in range(108):
    temp = {"id": item, "username": "name"+str(item), "email": "email"+str(item)}
    USER_LIST.append(temp)

def index(request, page):
    # 将用户信息分页展示
    # 第一页  0-9
    # 第二页  10-19
    # 第三页  20-29
    page = int(page)
    start_id = (page - 1) * 10
    end_id = page * 10 -1
    #用户列表
    user_list = USER_LIST[start_id:end_id]

    return render(request, "index.html", {"user_list": user_list})

def detail(request, nid):
    # 用户ID的详细信息
    nid = int(nid)
    current_detail_dict = USER_LIST[nid]
    return render(request, "detail.html", {"current_detail_dict": current_detail_dict})

3、分页html代码 mysite/templates/index.html,内容如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

    <table>
        <thead>
            <tr>
                <td>ID</td>
                <td>用户名</td>
                <td>详细</td>
            </tr>
        </thead>
        <tbody>
            {% for item in user_list %}

                <tr>
                    <td>{{ item.id }}</td>
                    <td>{{ item.username }}</td>
                    {#这里要加blog,否则点击之后,提示404#}
 <td><a href="/blog/detail/{{ item.id }}/" target="_blank">查看详细</a></td>
                </tr>
            {% endfor %}

        </tbody>

    </table>


</body>
</html>

4、用户详细信息html代码 mysite/templates/detail.html,内容如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

    <ul>
        <li>{{ current_detail_dict.id }}</li>
        <li>{{ current_detail_dict.username }}</li>
        <li>{{ current_detail_dict.email }}</li>

    </ul>

</body>
</html>

5、目录结构

mysite/
├── blog
│   ├── admin.py
│   ├── apps.py
│   ├── blog_urls.py
│   ├── __init__.py
│   ├── models.py
│   └── views.py
├── manage.py
├── mysite
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── templates
    ├── detail.html
    └── index.html

6、访问用户信息分页url,点击页面查看详细

通过访问url

http://127.0.0.1:8000/blog/index/1/

最后的数字可以换成其他的

点击查看详细,就可以看到用户详细信息

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏深度学习之tensorflow实战篇

Centos7.4 版本环境下安装Mysql5.7操作记录

MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MyS...

3639
来自专栏Web 开发

服务迁移导致数据差异

通常我在dnspod里面,设置的解析缓存时间很短,基本上我修改DNS,是马上生效的。但毕竟用户的DNS不在我们的控制范围,总会有用户解析到旧的服务器上面,杯具就...

1000
来自专栏北京马哥教育

MySQL/MariaDB数据库备份与恢复

前言 数据库一般存放着企业最为重要的数据,它关系到企业业务能否正常运转,数据库服务器总会遇到一 些不可抗拒因素,导致数据丢失或损坏,而数据库备份可以帮助我们...

5096
来自专栏IT笔记

Lepus搭建企业级数据库慢查询分析平台

Lepus的慢查询分析平台是独立于监控系统的模块,该功能需要使用percona-toolkit工具来采集和记录慢查询日志,并且需要部署一个我们提供的shell脚...

1182
来自专栏pangguoming

Centos7 Mysql 双机热备实现数据库高可用

mysql双主热备,也称主主互备,目的是mysql数据库高可用,只支持双机,原因是mysql的复制是一主多从,但一个从服务器只能有一个主服务器。

3562
来自专栏流柯技术学院

zabbix环境安装搭建

zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。 zabbix由zabbix server与可选组件zabbix a...

1133
来自专栏一枝花算不算浪漫

[Linux]Linux下安装和配置solr/tomcat/IK分词器 详细实例一.

37210
来自专栏DeveWork

WordPress自动在uploads文件夹内创建子文件夹

在开发主题或者插件的时候,经常要创建一个自定义的文件夹,我经常使用的一种方法就是在插件或主题安装的时候,先让程序自动到某个文件夹下先检测这个文件夹是否存在,如果...

1885
来自专栏pangguoming

CentOS7 安装 mysql8

本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ManagementAndJava/article/details/80...

6912
来自专栏自由而无用的灵魂的碎碎念

将MySQL数据迁移到Oracle

因为项目的原因,今晚将mysql数据库的内容尝试迁移到oracle,虽然结果失败,不过学到了不少,下次就不一定了,哈哈

1741

扫码关注云+社区

领取腾讯云代金券