路由系统

在django中,uri与逻辑函数的对应关系我们称之为路由系统

伪静态

伪静态是相对于静态文件来说的,例如https://www.cnblogs.com/hesujian/p/11165818.html

我们就称之为伪静态,因为他其实不是html静态页面,只是伪装成html静态页面

伪静态的好处:

  1、美观(传统的问号拼接看起来比较杂乱)

  2、seo(搜索引擎优化技术),搜索引擎比较喜欢收录静态页面,所以大家都做成伪静态去增加收录机会

实现伪静态以及路由分发

既然我们已经用伪静态的url去访问服务器了,那么服务器怎么拿到需要的值

比如我们把 :http://127.0.0.1:8000/up_student/?id=12&name=hua

伪装成  :http://127.0.0.1:8000/up_student/12/hua/

后台接收数据就需要用到路由分发的技术

路由分发及在后台匹配uri时,通过正则表达式的分组,把需要的值分组,再传到处理的函数中

代码:

# 1、直接通过分组接收,按顺序传值
def up_student(request,id,name):
print(id,name) urlpatterns = [
url(r'^up_student/(\w+)/(\w+)', up_student),
]
# 2、我们可以通过有名分组,不用按顺序也能传值 def up_student(request,name,id):
print(id,name) urlpatterns = [
url(r'^up_student/(?P<id>\w+)/(?P<name>\w+)', up_student)
]

路由正则

1、$符,以什么结尾

url(r'^test/',test),
# 这种在访问时在/后面加什么都可以访问
url(r'^test/$',test)
# 这种就是必须/结尾才可以

2、通配

url(r'^',test)

通配会匹配所有的url,可以用作匹配不到url时返回的页面(404)

所以我们通配符必须放在最后,不然他会先匹配通配,导致原有的url无法访问

反向路由

反向路由主要是针对form表单,当我们的uri发生变化时,所有的链接也要相应的发生变化

所有有个反向路由,可以让form表单里的action跟随uri的变化而变化

后台url:设置name属性

url(r'^sdsdsdsad/',test,name="xxx")

前端form表单:action改为随后面的name变化而变化

<form action="{% url "login" %}" method="post">

django创建app

我们会把不同类型的逻辑函数和uri放到不同的文件里,这个文件就成为app

创建有两种方式

  1、pycharm创建项目时创建,只能创建一个

  2、命令行创建,进入到项目的路径下输入

    python manage.py startapp 自定义名称

创建完的app文件中有如下就和文件

  admin.py: 写和django-admin相关的配置

  apps: 对app的配置

  models: 数据表模型

  views: 视图函数

  tests: 测试

路由分组

# 先要导入include方法
from django.conf.urls import include
# 总urls.py
url(r'^app01/', include('app01.urls')) # 分app urls.py
# 导入视图函数
from app01 import views
url('^test',views.test)

函数视图

函数视图主要写一些逻辑函数,函数视图主要分为两种

1、FBV  function based view  写函数处理逻辑

2、CBV  class based view  通过类处理逻辑

在CBV中

url需要做些改变

url(r'^login/', views.Login.as_view()),

处理逻辑的类也需要继承View这个类

from django.views import View
class Login(View):
def dispatch(self, request, *args, **kwargs):
super(Login, self).dispatch(request, *args, **kwargs)
# 自定制逻辑 def get(self):
pass def post(self):
pass # 如果是get提交就进入get函数,post提交就进入post函数
# 底层走的是dispatch函数,他会根据你的提交方式分发到不同函数里
# 我们也可以重写这个方法,加入一些其他限制,例如限制ip等等

提交方式

"""
常见的几种提交方式
get :请求数据
post :提交数据
delete :删除数据
put :更新数据
patch :更新部分数据
"""

Django路由及函数视图的更多相关文章

  1. Django 路由系统URL 视图views

    一.Django URL (路由系统) URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL模式以及要为该URL模式调用的视图函数之间的映射表:你就是以这种方式告诉Djan ...

  2. Django路由配置系统,视图函数

    一.路由配置系统(URLconf) URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表:你就是以这种方式告诉Django,对于这个 ...

  3. Django路由配置系统、视图函数

    一.路由配置系统(URLconf) URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表:你就是以这种方式告诉Django,对于这个 ...

  4. django目录下的路由系统和视图函数

    一.Django路由系统(url) 1.什么是路由系统 路由系统的本质是URL模式以及要为该URL模式调用的视图函数之间的一个映射表即不同的url路径对应的不同的函数,该路由系统是存放在全局配置文件u ...

  5. Django(二)路由系统、视图、模板

    大纲 一.内容概要: 二.上节回顾 三.Django 视图–views  1.获取用户多个数据及文件上传  2.FBV 和 CBV  3.装饰器 四.Django模板补充  - Django模板语言循 ...

  6. Django框架----路由系统、视图和模板(简单介绍)

    一.路由配置系统(urls) URL配置(URLconf)就像Django所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表: 你就是以这种方式告诉Django,对于这个URL ...

  7. 【python】-- Django路由系统(网址关系映射)、视图、模板

    Django路由系统(网址关系映射).视图.模板 一.路由系统(网址关系映射) 1.单一路由对应: 一个url对应一个视图函数(类) urls.py: url(r'^test', views.test ...

  8. Django 框架篇(四) : 视图(view)详解 以及 路由系统(url)

    |--Django的View(视图) |-- CBV和FBV: |-- 给视图增加装饰器: |-- request对象: |-- response对象: |-- Django的路由系统(url): | ...

  9. Django系列(二):Django的路由层,视图层和模板层

    1.Django的路由层 URL配置(URLconf)就像Django所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表:我们就是以这种方式告诉Django,对于客户端发来的某 ...

随机推荐

  1. Django之数据库对象关系映射

    Django ORM基本配置 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接数据库,并编写数据访问层代码 业务逻辑层去 ...

  2. Unicode浅析——调用科大讯飞语音合成接口(日语)所遇到的天坑

    如题,最近做的项目需要调用科大讯飞的语音合成接口,将日文合成日语.然后坑爹的是跟我对接的那一方直接扔过来一份接口文档,里面并未提及日语合成所需要的参数.中文.英文合成倒是没问题,就这个日语合成的音频始 ...

  3. ElasticSearch的Gateway及存储原理

    ES里有一个叫做gateway的东西,今天抽空理一下,前面翻译ES的一篇博文叫做“搜索引擎与时间机器”,既然里面谈到了时间机器,就免不了需要穿越时空的的门咯,I guess,也许gateway这名字就 ...

  4. 123457123456#0#-----com.threeapp.XueShuXue013----儿童学数学(13种方法)

    com.threeapp.XueShuXue013----儿童学数学(13种方法)

  5. ADFS RelayState

    https://blogs.technet.microsoft.com/askds/2012/09/27/ad-fs-2-0-relaystate/ 什么是RelayState,我为什么要关心?有两种 ...

  6. iOS-UITabbar自定义

    [self createCustomTabBar]; -(void)createCustomTabBar{    //创建一个UIImageView,作为底图    UIImageView *bgVi ...

  7. CenOS 7 防火墙 端口 systemctl 操作项

    Centos开放端口 # firewall-cmd --zone=public --add-port=3306/tcp --permanent Centos关闭端口 # firewall-cmd -- ...

  8. pytorch中F.softmax(x1,dim = -1) dim 取值测试及验证

    # -*- coding: utf-8 -*- """ Created on Mon May 27 11:09:52 2019 @author: jiangshan &q ...

  9. Fiddler之打断点

    1..Fiddler可以修改以下请求 --Fiddler设置断点,可以修改HTTP请求头信息,如修改Cookie,User-Agent等 --可以修改请求数据,突破表单限制,提交任意数字,如充值最小1 ...

  10. Spring之23:AbstractBeanFactory,Bean的加载

    <spring源码之:循环依赖> AbstractBeanFactory的作用:别名管理,单例创建与注册,工厂方法FactoryBean支持. 由图我们直接的看出,AbstractBean ...