路由系统

在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. GoogleNet-ILSVRC-2014冠军

    Going deeper with convolutions-22层 https://my.oschina.net/u/876354/blog/1637819 那么,GoogLeNet是如何进一步提升 ...

  2. linux简单命令2---文件搜索命令

    1:文件搜索命令:locate 文件名搜索速度快,缺点不能复杂的搜索.在数据库(/var/lib/mlocate)查找.它是一天一更新.可以强制更新数据库:updatedb 2:搜索命令的命令:whe ...

  3. APP手工项目02-用例编写-测试报告-fiddler弱网测试

    回顾 APP专项测试(兼容性,安装,卸载,升级,交叉事件,PUSH消息,性能,其他类型) 项目环境(开发环境,测试环境,准生产环境,生产环境) APP内测发布平台(蒲公英,fir.im)支持apk,i ...

  4. VCL组件之TPanel

    TPanel位于Standard组件面板上,也是常用的一种容器控件.面板的一个优点就是放在面板上的组件称为面板的一部分,因此它们与面板一起移动.这在设计阶段很有用. Panel组件的大部分功能在于其A ...

  5. pycharm连接linux创建django工程

    windows中安装最新版pycharm--2018年10月的版本 点击创建工程,看下图: C:\Users\Lenovo\PycharmProjects\untitled4 这个路径不要动,一动就出 ...

  6. 【leetcode_easy】589. N-ary Tree Preorder Traversal

    problem 589. N-ary Tree Preorder Traversal N叉树的前序遍历 首先复习一下树的4种遍历,前序.中序.后序和层序.其中,前序.中序和后序是根据根节点的顺序进行区 ...

  7. springboot-mybatis-pagehelper(分页插件)

    依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://m ...

  8. 【长期更新】Python使用随想笔记

    Q1:python函数传参是传值还是传引用? A:Python参数传递采用的肯定是"传对象引用"的方式.这种方式相当于传值和传引用的一种综合.python不允许程序员选择采用传值还 ...

  9. 【计算机视觉】Selective Search for Object Recognition论文阅读1

    Selective Search for Object Recognition 作者: J. R. R. Uijlings, K. E. A. van de Sande, T. Gevers, A. ...

  10. MySQL初始化脚本mysql_install_db使用简介及选项参数

    mysql_install_db是一个默认放在.../mysql/scripts的一个初始化脚本. 该脚本可以在任何装有perl的操作系统上被使用,在5.6.8之前的版本,该脚本是一个shell脚本, ...