[TOC=1,5]
>[success] # Django-url 请求映射
~~~
1.在settings.py目录下配置好ROOT_URLCONF = '根目录名.urls'
2.通过根目录下from django.conf.urls import url,创建urlpatterns列表
3.通过用户输入的url和urlpatterns中的url进行匹配
4.匹配成功后,导入并调用给定的视图python函数
5.如果匹配失败返回报错信息
~~~
* **注意:**
* url 一定要用$ 结尾
* 不需要在每个url前加反斜杠,因为每个url都有
* 每个正则表达式前面的'r' 是可选的但是建议加上。 它告诉Python 这个字符串是“原始的” —— 字符串中任何字符都不应该转义。
* * * * *
![](https://box.kancloud.cn/4178c81974a1f23cfd9fb6253cd183eb_572x337.png)
>[danger] ##### FBV - 请求映射写法
~~~
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'login',views.login),
]
~~~
>[danger] ##### CBV - 请求映射写法
* **注意点:**
* `一定在view层用的是 class 定义函数才可以使用`
~~~
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'index',views.index.as_view())
]
~~~
</br>
* * * * *
>[success] # 获取一组url
>[info] ### 方法一、Get
>[danger] ##### 使用场景
~~~
1.通过url 传递参数的时候使用
2.url 样式 http://127.0.0.1:8000/login?num=3
~~~
>[danger] ##### views 层编写
~~~
# 设置一个字典
USER_DICT = {
"1":{'name':"w"},
"2":{'name':"c"},
"3":{'name':"y"},
}
def login(request):
if request.method == "GET":
# 获取当前url传递的参数
num = request.GET.get('num',None)
if num:
USER_DIC=USER_DICT.get(num,None)
if USER_DICT:
# 获取成功后跳转的详情页面
return render(request,'person.html',{'USER_DIC':USER_DIC})
# 初始页面,当获取失败和第一次时候 跳到初始页面
return render(request,"index.html",{'USER_DICT':USER_DICT})
~~~
>[danger] ##### templates 编写
参数动态生成
~~~
{% for k,v in USER_DICT.items %}
<a href="/login?num={{ k }}">{{ v.name }}</a>
{% endfor %}
~~~
* * * * *
</br>
>[info] ### url设置正则方法一
>[danger] ##### 使用场景
~~~
1.所有url都是str类型,例如/test/1,中的1也是str类型
2.获取一组url,获取/test/2017、/test/2018这种变化的url
3.例如:http://127.0.0.1:8000/personinfo/1 后面的数字是动态的
~~~
**快速知识点:**
~~~
urlpatterns = [
url(r'^test/([0-9]{4})/$',views.index),
url(r'^test/([0-9]{4})/([0-9]{2})/$',views.index1),
url(r'^test/([0-9]{4})/([0-9]{2})/([0-9]+)/$',views.index2),
]
~~~
~~~
def index(request,yid)
def index1(request,yid,mid)
def index2(request,yid,mid,did)
~~~
* * * * *
>[danger] ##### url.py 配置
**注意:**
这里做了两个url,一个用来接受所有数据,一个用来正则匹配
![](https://box.kancloud.cn/7a9a41e9dfc0a0793e4bc9ef2ab4839d_676x172.png)
~~~
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'person/$', views.person),
url(r'personinfo/(\d+)',views.personinfo),
]
~~~
>[danger] ##### views.py 配置
~~~
# 设置一个字典
USER_DICT = {
"1":{'name':"w"},
"2":{'name':"c"},
"3":{'name':"y"},
}
# 获取所有数据
def person(request):
return render(request,'index.html',{'USER_DICT':USER_DICT})
# 用来接收url的匹配参数,跳转匹配的网址
def personinfo(request,nid):
if nid:
USER_DIC = USER_DICT[nid]
return render(request,"person.html",{'USER_DIC':USER_DIC})
~~~
>[danger] ##### 多个参数写法
**url:写法**
~~~
url(r'^nid-(\d+)-(\d+)', views.nid),
~~~
**views 写法:**
~~~
#uid,nid 分别是和正则对应url是一一对应
def test(request,uid,nid):
#第二种可以利用*arg
def test(request,*arg):
~~~
* * * * *
>[info] ### url设置正则方法二
>[danger] ##### 命名组通过属性名对应-(?P<属性名>)
~~~
对应函数为属性名依次对应,函数中的属性名位置可以不用顺序排列
~~~
**快速知识点:**
~~~
urlpatterns = [
url(r'^test/(?P<year>[0-9]{4})/$',views.index),
url(r'^test/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/$',views.index1),
url(r'^test/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/(?P<day>[0-9]+)/$',views.index2),
]
~~~
* * * * *
**第一种**
~~~
def index(request,year):
def index1(request,month,year):
def index2(request,year,month,day):
~~~
**第二种**
~~~
def test(request,**kwargs)
~~~
>[danger] ##### 小技巧-两个url指向同一函数
~~~
urlpatterns = [
url(r'^test/page/$',views.index),
url(r'^test/page(?P<page>(\d+))/$',views.index),
]
~~~
**views**
设置默认页
~~~
def index(request,page=1):
return HttpResponse(page)
~~~
- 网络原理
- 为搭建框架做准备
- 简单认识网路
- 自定义模拟网站案例
- 优化最终框架
- 数据存储 -- data
- 用户个人信息存储 -- User.txt
- 路由映射 -- routes
- 处理用户信息 -- routes_static.py
- 保存静态文件 -- static
- templates -- html 集中处理模块
- 首页 -- index.html
- 登陆 -- login.html
- 用户注册页面 -- register
- 日志模块 -- log.gua.txt
- 启动文件--server.py
- orm处理 -- model.py
- 日志模块 -- utils.py
- 两种数据库类型
- 传统数据库了解篇
- 前端快速入门
- JS简单使用入门
- css简单快速入门
- DJANGO
- virtualenv-创建虚拟环境
- 项目结构
- django-admin中文配置
- django-打印sql语句
- django-基础
- 认识MVC和MTV
- Django--初识
- Django--初识案例
- Django-FBV/CBV
- Django--常用input 交互
- Django-url
- Django-url.py 配置
- Django-include 使用
- Django-url name
- Django-ORM
- ORM-数据库配置
- ORM-model字段
- ORM-model字段解释
- ORM-字段选项
- ORM-查询
- ORM-四种常用查询方法
- ORM-三种获取数据
- ORM-其他查询方式
- ORM-条件查询双线
- ORM-Q和F条件使用
- ORM-三种数据库交互
- 案例 -- 一对多
- ORM-技巧/常见问题
- ORM-N+1 问题
- ORM-并发的处理
- ORM-数量查询、
- ORM-正向反向查询
- ORM-基础案例一
- ORM-基础一对多案例
- Django-templates
- Django-模板的继承
- Django-模板的过滤
- Django-自定义模板的过滤
- Django-cookie
- Django-cookies 装饰器
- Djang-session
- Django-CSRF
- Django-中间件 -- 后续了解
- Django- 缓存 -- 没有深入了解
- Django-form
- From-ajax
- form-内部验证处理
- form-属性
- form-常用的标签字段
- form-常用的下拉和选择
- form-widget速查
- Django-ajax序列化
- Django-多种ajax写法
- ajax-原生写法
- ajax-$写法
- ajax-ifram
- Django-ajax图片上传
- ajax-原始写法
- ajax-正常写法
- iframe+form
- 实战写法
- Django-常用自编写组件
- Django-双菜单组合搜索
- Django - 多菜单组合搜索
- Django-分页
- django-综合基础
- 综合基础-render
- django-admin
- admin-页面配置
- admin-字段配置
- admin-编辑页面
- admin-forms验证
- admin-创建抽象类
- django-验证码
- 验证码-第三方生成库
- 验证码-view.py使用
- 验证码-注意引入Monaco.ttf
- django-用户注册
- 注册-form 模块
- 注册-views 模块
- 注册-html模块
- 注册-model模块
- django-用户登录三种
- session登录
- form-session 写法
- view-写法
- Html-写法
- model-写法
- 继承类登录
- 外键关联登录
- django-简单的student 管理案例
- app-urls.py
- app-models.py配置
- admin-admin.py配置
- app-form.py 和数据库关联的写法
- app-FBV_views.py
- app-CBV_views.py
- templates-index.html
- django-博客系统
- APP目录-models.py 创建
- APP目录-基础展示数据分析
- APP目录-基础数据展示cls
- ListView
- DetailView
- FormView
- 额外功能拓建
- 添加文章搜索/用户文章查询功能
- 增加一个友情链接
- 增加一个评论模块
- App-利用Bootstrap4 搭建样式
- 项目crm
- 思维导图
- perfectCRM-项目名字
- settings.py-配置
- view.py-登陆/登出函数
- crm-app文件
- model.py-表的创建
- admin.py-注册后台
- view.py-视图层
- static-静态文件
- css
- bootstrap.min.css
- dashboard.css
- ie10-viewport-bug-workaround.css
- signin.css
- fonts
- imgs
- js
- jquery.js
- bootstrap.min.js
- holeder.js
- ie10-viewport-bug-workaround.js
- ie-emulation-modes-warning.js
- plugins
- html模板文件-templates
- crm
- index.html-首页模板