首页 > 其他 > 详细

2021/6/14 django基础+路由层

时间:2021-06-14 17:40:44      阅读:16      评论:0      收藏:0      [点我收藏+]
‘‘‘
django 基础
django-admin startproject xx
python manage.py startapp app01
installed_apps = [
‘app01‘
‘app01.apps.App01Config‘
]
手动创建模板文件夹
templates = [{

‘DIRS‘:os.path.join(BASE_DIR, ‘templates‘)
}]

手动创建静态文件夹
staticfiles_dirs=[
os.path.join(BASE_DIR, ‘static‘)

]

xx
xx
__init__.py
urls.py
wsgi.py
settings.py
app01
migrations
__init__.py
__init__.py
apps.py
views.py
tests.py
models.py
admin.py
templates
static
manage.py
db.sqlite3
python manage.py runserver [ip:port]

{% load static %}
{% static ‘xxxx‘ %}
request
.method
.POST
.get()
.getlist()
.GET
.body
.FILES
.is_ajax()
.get_full_path()
.path()
.path_info()
.user
HttpResponse(‘string‘), render(request, ‘html‘, {‘html‘:xx}), redirect(‘url‘)

浏览器 --》 wsgi ---》 django中间件 --》 urls路由曾 --》 views视图层 ---》 templates
templates ---》 views
views ---> models.py
models--->views
views --> django中间件

路由曾
1. 路由匹配
from django.conf.urls import url
xxx = [
url(‘re‘, views.xxx, name=None, kwargs=None)
]
from django.urls import path, re_path
xxx = [
path(‘‘, views.xxx, name=None)
re_path(‘‘, views.xx, name=None, kwargs=None)
]
<str/int/slug/uuid/path: xx> ---> 作为**kwargs传递给视图函数,xx = 转换器匹配内容
亦可自定义转换器
正则表达式
URL末尾反斜杠
django会自动加上 / 再请求一次,由settings.py中以下控制
append_slash = True
分组命名匹配
url(‘re1(re2)‘) --> 无名分组,作为*args传递给视图函数
url(‘re1(?P<name>re2)‘) --> 有名分组,作为**kwargs传递给视图函数, name=re2
反向解析
from django.shortcuts import reverse
reverse(‘url name参数值‘) 即可获取 url中 除了ip地址后面的 /re/ 路径

{% url ‘name参数值‘ %}

无名分组反向解析
from django.shortcuts import reverse
reverse(‘name‘, args=(x,)) 将x作为无名分组的值,获得真正的url
{% url ‘name‘ x %}
有名分组反向解析
from django.shortcuts import reverse
reverse(‘name‘, kwargs={有名分组名: value,...})
reverse(‘name‘, kwargs=(,))
{% url ‘name‘ 有名分组名=xx %}
{% url ‘name‘ x %}
2. 路由分发
将多个app的路由汇总成一条url
可以在app下创建属于自己的templates, static, urls.py
from django.conf.urls import url, include
from app01 import urls as u1
xx = [
符合该re匹配,就直接交给app01.urls匹配后面的内容,进行视图跳转
url(r‘‘, include(‘app01.urls‘))
url(r‘‘, include(u1))
]
3. 名称空间
当多个应用内存在url别名重名的情况,就需要使用命名空间
ps:我们可以在命名的时候加上app的前缀 app01_xx 即可避免冲突
from django.conf.urls import include, url
xx = [
url(r‘‘, include(‘app01.urls‘, namespace=‘app01‘))

]
{% url ‘app01:xxx‘ %}
from django.shortcuts import reverse
reverse(‘app01:xxx‘)
4. 伪静态
将一个动态页面伪装成一个静态页面,增大搜索机器人的搜索频率
只要在url正则规则中,加入.html结尾即可
url(r‘^xxx.html‘, view.reg)





‘‘‘

2021/6/14 django基础+路由层

原文:https://www.cnblogs.com/zhangzhuowei/p/14882688.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!