Django路由及函数视图
路由系统
在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路由及函数视图的更多相关文章
- Django 路由系统URL 视图views
一.Django URL (路由系统) URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL模式以及要为该URL模式调用的视图函数之间的映射表:你就是以这种方式告诉Djan ...
- Django路由配置系统,视图函数
一.路由配置系统(URLconf) URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表:你就是以这种方式告诉Django,对于这个 ...
- Django路由配置系统、视图函数
一.路由配置系统(URLconf) URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表:你就是以这种方式告诉Django,对于这个 ...
- django目录下的路由系统和视图函数
一.Django路由系统(url) 1.什么是路由系统 路由系统的本质是URL模式以及要为该URL模式调用的视图函数之间的一个映射表即不同的url路径对应的不同的函数,该路由系统是存放在全局配置文件u ...
- Django(二)路由系统、视图、模板
大纲 一.内容概要: 二.上节回顾 三.Django 视图–views 1.获取用户多个数据及文件上传 2.FBV 和 CBV 3.装饰器 四.Django模板补充 - Django模板语言循 ...
- Django框架----路由系统、视图和模板(简单介绍)
一.路由配置系统(urls) URL配置(URLconf)就像Django所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表: 你就是以这种方式告诉Django,对于这个URL ...
- 【python】-- Django路由系统(网址关系映射)、视图、模板
Django路由系统(网址关系映射).视图.模板 一.路由系统(网址关系映射) 1.单一路由对应: 一个url对应一个视图函数(类) urls.py: url(r'^test', views.test ...
- Django 框架篇(四) : 视图(view)详解 以及 路由系统(url)
|--Django的View(视图) |-- CBV和FBV: |-- 给视图增加装饰器: |-- request对象: |-- response对象: |-- Django的路由系统(url): | ...
- Django系列(二):Django的路由层,视图层和模板层
1.Django的路由层 URL配置(URLconf)就像Django所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表:我们就是以这种方式告诉Django,对于客户端发来的某 ...
随机推荐
- Angular 自定义模块以及配置路由实现模块懒加载
项目目录 创建模块 ng g module module/user --routing ng g module module/article --routing ng g module module/ ...
- 阶段5 3.微服务项目【学成在线】_day16 Spring Security Oauth2_12-SpringSecurityOauth2研究-JWT研究-生成私钥和公钥
3.6.3 JWT入门 Spring Security 提供对JWT的支持,本节我们使用Spring Security 提供的JwtHelper来创建JWT令牌,校验JWT令牌 等操作. 3.6.3. ...
- web自动化01-自动化解决的问题-环境搭建-元素定位
自动化测试 概念:由程序代码代替人工完成验证系统功能的过程 解决的问题: 回归测试 压力测试 兼容性测试 提高测试效率,提升产品质量 自动化测试分类 web自动化测试 移动自动化测试 接口自动化测试 ...
- SpringCloud学习成长之十二 断路器监控
在我的第四篇文章断路器讲述了如何使用断路器,并简单的介绍了下Hystrix Dashboard组件,这篇文章更加详细的介绍Hystrix Dashboard. 一.Hystrix Dashboard简 ...
- jQuery补充之jQuery扩展/form表单提交/滚动菜单
jQuery扩展 为了避免重复造轮子,能高效使用别人的代码,所以有了扩展. jQuery扩展有两种方式: 自执行函数方式 定义函数,并执行函数. 自执行函数: (function(jq){ jq.ex ...
- sql server 查看索引碎片大小,并定期重建索引
查看碎片情况使用 dbcc showcontig 函数来进行 代码: --改成当前库 use DB_Name --创建变量 指定要查看的表 declare @table_id int set @ ...
- CEIWEI CommMonitor 串口监控精灵11.0 SDK/OCX 串口过滤驱动
CommMonitorX 监视精灵SDK,能够嵌入到你的App程序中,从而在你的App中实现串行端口分析.调试串行设备的协议信息,并可以拦截.记录串行端口程序操作串口的TX.Rx数据包.串口置信息如波 ...
- URL锚点HTML定位技术机制、应用与问题
by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=3591 一.锚点是什么 ...
- Android_7.1.1_r6源码下载
作为一名Android工程师,阅读Android源代码也是一门基本功,前段时间由于公司开发需要,便下载编译了Android_7.1.1_r6的源代码.在Windows下貌似是无法编译源代码的,为了以后 ...
- Spring 控制器层如何启用验证?
1.示例代码 @PostMapping("/adduser") public String addUser(@Valid User user,BindingResult bindi ...