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,对于客户端发来的某 ...
随机推荐
- Django之数据库对象关系映射
Django ORM基本配置 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接数据库,并编写数据访问层代码 业务逻辑层去 ...
- Unicode浅析——调用科大讯飞语音合成接口(日语)所遇到的天坑
如题,最近做的项目需要调用科大讯飞的语音合成接口,将日文合成日语.然后坑爹的是跟我对接的那一方直接扔过来一份接口文档,里面并未提及日语合成所需要的参数.中文.英文合成倒是没问题,就这个日语合成的音频始 ...
- ElasticSearch的Gateway及存储原理
ES里有一个叫做gateway的东西,今天抽空理一下,前面翻译ES的一篇博文叫做“搜索引擎与时间机器”,既然里面谈到了时间机器,就免不了需要穿越时空的的门咯,I guess,也许gateway这名字就 ...
- 123457123456#0#-----com.threeapp.XueShuXue013----儿童学数学(13种方法)
com.threeapp.XueShuXue013----儿童学数学(13种方法)
- ADFS RelayState
https://blogs.technet.microsoft.com/askds/2012/09/27/ad-fs-2-0-relaystate/ 什么是RelayState,我为什么要关心?有两种 ...
- iOS-UITabbar自定义
[self createCustomTabBar]; -(void)createCustomTabBar{ //创建一个UIImageView,作为底图 UIImageView *bgVi ...
- CenOS 7 防火墙 端口 systemctl 操作项
Centos开放端口 # firewall-cmd --zone=public --add-port=3306/tcp --permanent Centos关闭端口 # firewall-cmd -- ...
- pytorch中F.softmax(x1,dim = -1) dim 取值测试及验证
# -*- coding: utf-8 -*- """ Created on Mon May 27 11:09:52 2019 @author: jiangshan &q ...
- Fiddler之打断点
1..Fiddler可以修改以下请求 --Fiddler设置断点,可以修改HTTP请求头信息,如修改Cookie,User-Agent等 --可以修改请求数据,突破表单限制,提交任意数字,如充值最小1 ...
- Spring之23:AbstractBeanFactory,Bean的加载
<spring源码之:循环依赖> AbstractBeanFactory的作用:别名管理,单例创建与注册,工厂方法FactoryBean支持. 由图我们直接的看出,AbstractBean ...