前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >django中url路由配置及渲染方式

django中url路由配置及渲染方式

作者头像
py3study
发布于 2020-01-19 01:52:58
发布于 2020-01-19 01:52:58
3.1K00
代码可运行
举报
文章被收录于专栏:python3python3
运行总次数:0
代码可运行

  今天我们学习如何配置url、如何传参、如何命名、以及渲染的方式,内容大致有以下几个方面。

  • 创建视图函数并访问
  • 创建app
  • django中url规则
  • 捕获参数
  • 路径转换器
  • 正则表达式
  • 额外参数
  • 渲染方式

创建视图并访问

  项目中自带的Python文件中,并没有带有视图,因此我们自己创建一个,通常,我们把视图命名views.py。

  然后在views.py中,导入头文件

from django.http import HttpResponse

  然后我们在views.py中,写一些Python函数,用来访问

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    def hello(request):                          /*request用户的请求 */
    
        return HttpResponse(‘hello,欢迎来到django’)

 在url.py中为视图函数配置路由

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from django.urls import path
from .  import views

urlpatterns = [
    path('hello',hello),       
]

   运行项目,如果上传方式是Ctrl+S的话,记得上传之后再运行,成功后

  浏览器输入  127.0.0.1:8000/hello    即可访问到


创建app

  创建APP的方式不只一种,在虚拟机里可以创建,也可以在pycharm里创建

 命令为:Python manage.py startapp appname

  在虚拟机里创建完,要在pycharm中下载下来

在pycharm中创建:

    方式一:

  项目运行成功后,在terminal里面找到本项目,输入命令 Python manage.py startapp appname

  如果没有连接本地,则需要重新连接

  方式二:

 tool   ---->   run manage.py projectname

  startapp appname

  此方法也需要下载下来

下载完成后,创建的app就出现了。


url规则

1、网址组成

    网址:全球统一资源定位符

    https://www.i.cnblogs.com/EditPosts.aspx?postid=10423125

    这是本文网址,做个栗子吧

https://www.i.cnblogs.com/EditPosts.aspx?postid=10423125

协议              域名                      路径                   参数            

django只搜索路径部分,与其他都无关

 2、django的路由系统

     当一个请求来到

    1、首先到项目目录下,url.py里查找路由规则

    2、跟urlconf模块,里面定义了urlpatterns变量

    3、按顺序运行每一个,到第一个匹配的模式停止

    4、一旦匹配,django导入并调用给定的视图

    5、如果没有匹配到,或者中间出错,则返回404

3、path里参数的含义

    path(route,view,kwargs=None,name=None)

  •  route   :   (必须有)是一个字符串的url规则
  • view      :  (必须有)是个视图
  • kwargs   :(可有可无)额外参数,是字典类型,传递给view
  • name     :(可有可无)url名字

4、在url中捕获参数

   尖括号   < 参数  > 可以捕获参数,传递给视图

  本来捕获的值是字符串

  如果要捕获两个参数,尖括号间可用/斜杠,也可用-连接符,但访问要一致

5、路径转化器

  如果想要让捕获的参数符合条件,那么我们会用到路径转化器

  符号是冒号   :       eg:<int:age>

  常用的路径转化器

int   :    匹配任意整数

  path  :   匹配任意非空字符

   str    :   匹配除了 / 路径分隔符外所有字符串

  uuid  :  格式化id

  sulg   :  匹配任意ASCII字符和连字符及下划线

6、正则表达式

  前面我们学习到路径转化器,但是有时候我们的转化器并不能够完全满足我们捕获参数的条件,像int转化器去捕获年份,如果我们传入10000,肯定会捕获呀,但不合理,因此,我们正则表达式可以更好用一些。

  使用时,首先要导入进来 form django.url import re_path

  参数跟path里相同

  下面看正则表达式的方法用什么捕获方式

第一种是分组的,在视图中根据参数名传参

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
re_path(r'plan/(?P<year>\d\d\d\d)/(?P<month>[0-9]|1[0-2])/',plan),

  年  四位数,月  0-9 或者1和0-2

第二种是不分组的,在视图中安位置传参

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
re_path(r'plan/(\d{4})\([0-9]|1[0-2]/',plan),

  \d\d\d\d与\d{4}含义相同,都是四位整数

7.主路由分配给分路由

    如果所有是url都在主路由下配置,那么对于检查和维护修改都会带来不便,因此我们需要将主路由分配给各个app下的路由

方式:include()

    使用方法:先需要导入,

from django.urls import path,include

  使用:   eg,名为teacher的APP,将主路由分给teacher.url

path(‘teacher/’,include('teacher.urls')),

 在teacher-APP中,创建urls.py(因为新建的APP没有自带url.py)

    在teacher.url.py中,手动输入

    form  django.urls import path

    from .views import *

    这里的views是此APP里的views

 include可以多级使用

  include的原理:当遇到include时,路径就被切断,然后在include包含的分路由中开始继续检索。

  在path(‘teacher-<age>/’,include('teacher.urls')),里面传参是可以的,就是分路由每个都要传参。

8、传递额外参数

  当在路由中传入额外参数时,如果kwargs中key值与捕获参数不一致,按照kwargs为准。

    如果在include后,传递的话,那么相当于此分路由各个url后都有此额外参数。

9、app_name的作用

-页面重定向

    redirect     可以实现页面跳转

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    导入  from django.shortcuts import render,redirect,reverse

    使用     return  redirect(‘网址或者路径’)

-reverse

    如果给path里加入name参数,reverse(name)就等于前面路径

    因此实现页面跳转,可以设变量url=reverse(name的值)     然后return redirect(url)即可实现

-app_name

    那我们的name就不可以设为一样的吗?

    在不同app下其实可以一样,但需要使用app_name

    在url.py里urlpatterns前写

app_name = ‘appname’  

使用:

    url=reverse(appname:name)


10、模板系统

    HTML源码写到模板文件中

-模板路径设置

在项目中创建templates文件夹,在文件夹内创建跟APP同名的文件夹

主目录下settings.py中找到        然后写入    

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')]...
  }

-渲染

    在templates下写的HTML要如何使用呢?

    在需要使用的视图中引用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    from django.template.loader import get_template
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    from django.shortcuts import render

   使用时需要渲染,用render 

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def new(request):
    fg=get_template('student/index.html')      路径从templates往下的开始写
    html=fg.render()
    return HttpResponse(html)

    访问此视图,HTML模板即可被渲染出来

  另一种更简便的方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def new(request):

    return render(request,'student/index.html')

这次就到这里,下一篇会深入模板变量哦。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/02/28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Django(二):url和views
  网络通讯的本质是socket,从socket封装到MVC模式,参见另外几篇博客。本节笔记整理自Django2.0官方文档。
py3study
2020/01/19
1K0
Django的路由控制
URL配置(URLconf)就像Django 所支撑网站的目录。它的本质是URL与要为该URL调用的视图函数之间的映射表;你就是以这种方式告诉Django,对于客户端发来的某个URL调用哪一段逻辑代码对应执行
py3study
2018/08/03
2.8K0
python_day19_Django-
  全名是Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller),具有耦合性低、重用性高、生命周期成本低等优点。
py3study
2020/01/10
7130
python_day19_Django-
Django 路由
PS:注意,在使用名称空间的时候,include函数需要传递两个参数,arg和namespace, 当namespace不为空时,arg参数必须是一个二元组,除了urlpatterns不能为空之外,app_name也必须填写
HammerZe
2022/03/25
6280
Django 路由
Django路由控制URL详解
URL是Web服务的入口,用户通过浏览器发送过来的任何请求,都是发送到一个指定的URL地址,然后被响应。在Django项目中编写路由,就是向外暴露我们接收哪些URL的请求,除此之外的任何URL都不被处理,也没有返回。通俗地理解,不恰当的形容,URL路由是你的Web服务对外暴露的API。Django奉行DRY主义,提倡使用简洁、优雅的URL。
菲宇
2021/12/06
1.1K0
Django路由控制URL详解
Pycharm开发Django项目URL分发器
视图一般都写在app的views.py中。并且视图的第一个参数永远都是request(一个HttpRequest)对象。这个对象存储了请求过来的所有信息,包括携带的参数以及一些头部信息等。在视图中,一般是完成逻辑相关的操作。比如这个请求是添加一篇博客,那么可以通过request来接收到这些数据,然后存储到数据库中,最后再把执行的结果返回给浏览器。视图函数的返回结果必须是HttpResponseBase对象或者子类的对象。示例代码如下:
用户2200417
2021/10/22
8080
Django学习路由(5)
电话A 打电话给 1001 需要用到中转设备来指路,走那条线路可以到达目的地。如果表中没有,则不管他!
萌海无涯
2019/09/03
4200
Django学习路由(5)
Django二级域名路由配置方案django-hosts
修改主机的hosts,以支持域名访问本地服务,且服务运行在80端口run server 0.0.0.0:80测试。
菲宇
2019/07/31
1.6K0
Django二级域名路由配置方案django-hosts
Python进阶27-Django 路由层
-多年互联网运维工作经验,曾负责过大规模集群架构自动化运维管理工作。 -擅长Web集群架构与自动化运维,曾负责国内某大型金融公司运维工作。 -devops项目经理兼DBA。 -开发过一套自动化运维平台(功能如下): 1)整合了各个公有云API,自主创建云主机。 2)ELK自动化收集日志功能。 3)Saltstack自动化运维统一配置管理工具。 4)Git、Jenkins自动化代码上线及自动化测试平台。 5)堡垒机,连接Linux、Windows平台及日志审计。 6)SQL执行及审批流程。 7)慢查询日志分析web界面。
DriverZeng
2022/09/26
1.1K0
Python进阶27-Django 路由层
Django学习-第二讲 DjangoURL与视图
视图一般都写在app的views.py中,一个app我们可以看作是一个网站中的一个模块。并且视图的第一个参数永远都是request(一个HttpRequest)对象。这个对象存储了请求过来的所有信息,包括携带的参数以及一些头部信息等。在视图中,一般是完成逻辑相关的操作。比如这个请求是添加一篇博客,那么可以通过request来接收到这些数据,然后存储到数据库中,最后再把执行的结果返回给浏览器。视图函数的返回结果必须是HttpResponseBase对象或者子类的对象。示例代码如下:
小海怪的互联网
2019/08/23
1.1K0
Django学习-第二讲 DjangoURL与视图
Django源码学习-6-URL 路由
Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。
小团子
2019/08/01
6780
Django源码学习-6-URL 路由
二、路由、模板
一、路由系统 在settings.py文件中通过ROOT_URLCONF指定根级url的配置 urlpatterns是一个url()实例的列表 一个url()对象包括: 正则表达式 视图函数 名称name 编写URLconf的注意: 若要从url中捕获一个值,需要在它周围设置一对圆括号 不需要添加一个前导的反斜杠,如应该写作'test/',而不应该写作'/test/' 每个正则表达式前面的r表示字符串不转义 请求的url被看做是一个普通的python字符串,进行匹配时不包括get或post请求的参数及域
酱紫安
2018/04/16
1.8K0
Django 系列篇(四):路由篇(上)
由于 Django 3.0+ 非长期支持版本,并且版本兼容性还存在一定的的 Bug,建议重新安装 2.2.11 长期支持版本
AirPython
2020/05/07
5440
Django知识点
一、Django pip3 install django C:\Python35\Scripts # 创建Django工程 django-admin startproject 【工程名称】 mysite - mysite # 对整个程序进行配置 - init - settings # 配置文件
院长技术
2021/02/19
8480
【愚公系列】2022年01月 Python教学课程 45-Django框架之路由命名和反解析
路由简单的来说就是根据用户请求的 URL 链接来判断对应的处理程序,并返回处理结果,也就是 URL 与 Django 的视图建立映射关系。
愚公搬代码
2022/12/01
6860
02.Django基础二之URL路由系统
  URL配置(URLconf)就像Django 所支撑网站的目录。它的本质是URL与要为该URL调用的视图函数之间的映射表。你就是以这种方式告诉Django,对于这个URL调用这段代码,对于那个URL调用那段代码。
changxin7
2019/09/29
1.5K0
02.Django基础二之URL路由系统
django学习-day02
今天又是满满收获的一天,第一天学习了一个大概,第二天来学习细节部分,直接把笔记拷上来吧
kirin
2020/05/09
4460
知了超细讲解Django打造大型企业官网学习记录,02diango url 笔记
文件>新建项目>选择django,然后指定项目所在的路径,以及python解释器,再点击Create就可以创建项目了。
二爷
2020/07/22
9160
知了超细讲解Django打造大型企业官网学习记录,02diango url 笔记
Django之路由层
以图书管理系统为例我们在数据库建立四张表:图书表、出版社表、作者表、作者信息,这里表与标的对应关系如下:
GH
2019/12/16
1.4K0
Django之路由层
SAOMS系统搭建(一)
SAOMS系统搭建 采用python3.6 + django2.1 + pycharm Django采用M(model: 数据存取层) T(template: 业务逻辑层) V(views: 表现层) 初始化项目 1. 首先要确保有pip包管理工具 2. virtualenv: pip install virtualenv, python虚拟环境 3. mkvirtualenv <project_name>创建虚拟环境 4. workon <env_name> 进入虚拟环境 5. pip install x
py3study
2020/01/06
9660
相关推荐
Django(二):url和views
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文