urls.py路由用法

  1. url基本概念
  2. url格式
  3. urls.py的作用
  4. url解析过程
  5. include的作用
  6. kwarg的作用
  7. name的作用

URL概念

URL(Uniform Resoure Locator)统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。

URL格式 ———举个栗子:

http://127.0.0.1:8000/hello/
URL解释:
schema://host[:port#]/path/.../[?query-string][#anchor]
schema:指定使用的协议(例如:http, https, ftp)
host:Http服务器的IP地址或者域名
port:端口号,http默认是80端口
path:访问资源的路径
query-string:发送给http服务器的数据
anchor:锚点

urls.py的作用

URL配置(URLconf)就像是Django所支撑网站的目录。它的本质是URL模式以及要为该URL模式调用的视图函数之间的映射表。以这样的方式告诉Django,对于那个URL调用那段代码,url的加载就是从配置文件中开始。

url例子

# hello_django/urls.py:
from django.conf.urls import include,path
from django.contrib import admin
from books import views urlpatterns = [
path('admin/', admin.site.urls),
path('index/',views.index),
path('news/',include('news.urls')), #给其他APP分配路由
path('books/',include('books.urls')),
]
# books/views.py
from django.http import HttpResponse
from django.shortcuts import render def hello_python(request):
return HttpResponse('Hello python!') def hello_php(request):
return render(request,'books/index.html') def hello_course(request, course):
return HttpResponse('Hello %s' % course) def add(request,a,b):
c = int(a)+int(b)
return HttpResponse(str(c)) def hello_django(request, name, num):
return HttpResponse('Hello %s %s' % (name, num))

参数捕获:

1、捕获位置参数(可变参数):在url函数中,第一个正则表达式使用()括号进行捕获参数.

2、捕获关键字参数:在url函数中,第一个正则表达式使用(?P<keyword>)进行捕获。

注意事项:

参数类型是字符串类型,所以,如果使用数字类型,需要使用int函数转换成int类型。

include的作用

方便项目管理:
一个project有一个总的urls.py,各个app也可以自己建立自己的urls.py,不过都需要使用include()函数在project的urls.py文件进行注册,这样可以把路由分开,避免全都集中在一个urls.py文件里面,利于管理。
#hello_django/urls.py     主url文件
from django.conf.urls import include,path
from django.contrib import admin
from .import views urlpatterns = [
path(r'^admin/', admin.site.urls),
path(r'^books/',include('books.urls')),
]
#books/urls.py    APP books里面的URL文件
from django.urls import path
from . import views urlpatterns =[
path(r'^$',views.index),
path(r'article/$', views.article),
#book/view.py           APP books里面的view文件
from django.http import HttpResponse
def index(request):
return HttpResponse('这是首页')
def article(request,):
return HttpResponse('这是文章的首页')

kwargs的作用

传递一个Python 字典作为额外的参数传递给视图函数。django.conf.urls.url() 函数可以接收一个可选的第三个参数,它是一个字典,表示想要传递给视图函数的额外关键字参数。
#hello_django/urls.py     主url文件
from django.conf.urls import include,url
from django.contrib import admin
from .import views urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^books/',include('books.urls'),{'switch':'true'}),
]
# book/view.py      APP books里面的view文件
from django.http import HttpResponse
import datetime
def index(request,**arg):
if arg.get('switch') == 'true':
print(datetime.datetime.now())
return HttpResponse('<h1>这是首页</h1>')
URL传递额外参数:
url函数有一个参数叫做kwargs,这个参数可以传递额外的参数到views中,并且必须为字典类型。这在使用 include的时候,需要统一给下面的url一些参数的时候,显得尤其有用。
注意:
当在主项目的url里传参数的时候,include里views.py下面的所有视图函数都要接收,不然会报错。

name的作用

  • url有一个name的参数,name参数可以给这个url取一个合适的名字。通过给url取名字,以后在view或者模板中使用这个URL,就只需要通过这个名字就可以了。这样做的原因是防止url的规则更改,会导致其他地方用了这个url的地方都需要更改,但是如果取名字了,就不要做任何改动了。还可以在重定向的时候直接使用名字调用原来的url
# book/url.py    APP books里面的URL文件
from django.conf.urls import url
from . import views urlpatterns =[
url(r'^$',views.index),
url(r'article/$', views.article,name='books_article'),
url(r'^(?P<books>\w+)/$',views.book_list,name='books_lists'),
url(r'^article_new/$', views.article_new,name='books_article_new'),
]
# book/views.py   APP book里面的view文件
from django.shortcuts import render,reverse,redirect
from django.http import HttpResponse
# Create your views here. def article(request,**kwargs):
if kwargs.get('switch') == 'true':
return redirect(reverse('book_article_new'))
return HttpResponse('这是文章首页') def article_new(request,**kwargs):
return HttpResponse('这是新的文章首页')

模板渲染方式

  1. 模板路径
  2. 渲染方式

setting.py中模板路径配置:

TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]

1.直接将html字符串硬编码HttpResponse

def index_1(request):
return HttpResponse('<h1>Hello Django World!</h1>')

2.django.template.loader 定义了函数以加载模板。

get_templatetemplate_nameusing = None

该函数使用给定的名称加载模板并返回一个Template 对象.get_template()尝试获取每个模板直到有一个成功满足。

from django.template.loader import get_template
def index_2(request,bn):
t = get_template('index.html')
html = t.render({'books_name':bn})
return HttpResponse(html)

3.使用render进行渲染。

from django.shortcuts import render

def index_3(request,bn):
return render(request,'index.html',{'booksname':bn})

Django(一):url路由配置和模板渲染的更多相关文章

  1. 3/19 Django框架 url路由配置及模板渲染

    3/19 Django框架 url路由配置及模板渲染 1.路由分配 URL(Uniform Resoure Locato):统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示, ...

  2. Django 02 url路由配置及渲染方式

    Django 02 url路由配置及渲染方式 一.URL #URL #(Uniform Resoure Locator) 统一资源定位符:对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是 ...

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

    今天我们学习如何配置url.如何传参.如何命名.以及渲染的方式,内容大致有以下几个方面. 创建视图函数并访问 创建app django中url规则 捕获参数 路径转换器 正则表达式 额外参数 渲染方式 ...

  4. url路由配置以及渲染方式

    路由分配及模板渲染 路由系统 urlpatterns = [ path('admin/', admin.site.urls), path('teacher/',include('teacher.url ...

  5. Django学习手册 - 正则URL路由配置/路由分发

    ############################################### 总结: 一.url路由配置: 方式一:(通过url链接get获取) 方式二:(url路由匹配方式获取-拓 ...

  6. Django之url路由

    Django之url路由 url路由介绍 url路由是关联url及其视图函数关系的过程. 作用就是使views里面处理数据的函数与请求的url建立映射关系 url路由配置 Django的url路由配置 ...

  7. Django中的路由配置简介

    Django中的路由配置简介 路由配置(URLconf)就是Django所支撑网站的目录.其实,我们利用路由交换中的"寻址"的概念去理解Django的路由控制会简单很多,它的本质就 ...

  8. 初学django框架 (urls,include子路由,render模板渲染)(一)

    一.urls url的使用为了告诉django哪个url调用那一段代码 如上左图所示,后面的test,test1如下图所示,为视图函数,通过前面的路径,调用后面函数的代码: 只有输入正确的url才会在 ...

  9. Django之URL路由系统

    一 URL配置 Django 1.11版本 URLConf官方文档 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表.你就是以这 ...

随机推荐

  1. ESP8266 智能配网 断电重连

    ESP8266 智能配网 断电重连 #include <ESP8266WiFi.h> bool autoConfig() { WiFi.begin(); for (int i = 0; i ...

  2. python的文件操作及简单的用例

    一.python的文件操作介绍 1.文件操作函数介绍 open() 打开一个文件 语法:open(file, mode='r', buffering=-1, encoding=None, errors ...

  3. 力扣(LeetCode)旋转字符串 个人题解

    给定两个字符串, A 和 B. A 的旋转操作就是将 A 最左边的字符移动到最右边. 例如, 若 A = 'abcde',在移动一次之后结果就是'bcdea' .如果在若干次旋转操作之后,A 能变成B ...

  4. 万恶之源-python基本数据类型

    万恶之源-基本数据类型(dict) 本节主要内容: 字典的简单介绍 字典增删改查和其他操作 3. 字典的嵌套 ⼀一. 字典的简单介绍 字典(dict)是python中唯⼀一的⼀一个映射类型.他是以{ ...

  5. HTTPS 原理分析——带着疑问层层深入

    HTTPS 随着 HTTPS 建站的成本下降,现在大部分的网站都已经开始用上 HTTPS 协议.大家都知道 HTTPS 比 HTTP 安全,也听说过与 HTTPS 协议相关的概念有 SSL .非对称加 ...

  6. 2019-11-6:ubuntu安装配置JAVA环境

    1,下载JAVA,官方java 18下载网站:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-21331 ...

  7. cookies与session简介

    一.session和cookie 简单来讲cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案. 同时我们也看到,由于采用服务器端保持状态的方案在客户端 ...

  8. day20190904一号店网页HTML+CSS

    1.知识要理一理.梳理.当天讲了什么内容?当天我学习到了什么内容?看懂.所有的学习型从模仿开始.1.看懂代码,看懂思路,学思路,多问自己问题,为什么要这么写?下一步为什么要这么写?因 果.2.多练多敲 ...

  9. Prometheus 安装

    目录 简介 安装部署 环境准备 安装 配置环境变量 配置 启动 简介 prometheus存储的是时序数据,即按相同时序(相同名称和标签),以时间维度存储连续的数据的集合. 时序(time serie ...

  10. js抽奖概率随机取出数据(简单示例)

    在平常活动开发当中,经常会碰到抽奖等类似的js功能,那么下面我们随机取数组中的一条来展示出来. ( 一 ) 无概率问题 var gift_ = ['apple pro一台','iphoneX一台',' ...