gpt4 book ai didi

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

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章详解django中url路由配置及渲染方式由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

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

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

创建视图并访问 。

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

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

?
1
from django.http import httpresponse

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

?
1
2
def hello(request):             / * request用户的请求 * /
return httpresponse(‘hello,欢迎来到django')

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

?
1
2
3
4
5
6
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 。

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

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

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

方式二:

tool ----> run manage.py projectname 。

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

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

startapp appname 。

此方法也需要下载下来 。

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

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

下载完成后,创建的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里参数的含义 。

?
1
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里相同 。

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

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

?
1
re_path(r 'plan/(?p<year>\d\d\d\d)/(?p<month>[0-9]|1[0-2])/' ,plan),

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

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

?
1
re_path(r 'plan/(\d{4})\([0-9]|1[0-2]/' ,plan),

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

7.主路由分配给分路由 。

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

方式:include() 。

使用方法:先需要导入, 。

?
1
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中,手动输入 。

?
1
2
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为准.

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

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

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

9、app_name的作用 。

-页面重定向 。

redirect 可以实现页面跳转 。

导入 from django.shortcuts import render,redirect,reverse[/code] 。

使用 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' 。

使用:

?
1
url = reverse(appname:name)

10、模板系统 。

html源码写到模板文件中 。

-模板路径设置 。

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

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

?
1
2
3
4
5
6
templates = [
   {
     'backend' : 'django.template.backends.django.djangotemplates' ,
     'dirs' : [os.path.join(base_dir, 'templates' )],
     ...
  }

-渲染 。

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

 在需要使用的视图中引用 。

?
1
2
from django.template.loader import get_template
from django.shortcuts import render

使用时需要渲染,用render  。

?
1
2
3
4
def new(request):
fg = get_template( 'student/index.html' )   路径从templates往下的开始写
html = fg.render()
return httpresponse(html)

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

另一种更简便的方法 。

?
1
2
def new(request):
return render(request, 'student/index.html' )

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我.

原文链接:http://www.cnblogs.com/bdydrq/p/10423125.html 。

最后此篇关于详解django中url路由配置及渲染方式的文章就讲到这里了,如果你想了解更多关于详解django中url路由配置及渲染方式的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com