文章目录
django基础(二)
1.回顾
-
虚拟环境
不同项目用到不同版本的第三方模块时,才会用到虚拟环境。pip install virtualenvvirtualenv xxx --python=python3.9 virtualenv xxx/xx/xxx/xx --python=python3.9xxx/xx/xxx/xx/activate (base)>>>pip (base)>>>python(base)>>>deactivate注意:以后项目部署时,都需要命令来做。
-
django
pip install django==3.2django-admin startproject 项目名 cd 项目名 python manage.py startapp app01 python manage.py startapp app02 python manage.py runserver 127.0.0.1:8000 -
开发时,Pycharm+虚拟环境
-
Pycharm+虚拟环境+普通项目
-
Pycharm+虚拟环境+django项目(最新版本)
-
Pycharm+虚拟环境+django项目(指定版本)
-
Pycharm+虚拟环境+普通项目
-
安装django
pip install django==3.2 -
创建项目
django-admin startproject 项目名 . -
创建app
python manage.py startapp app01 python manage.py startapp app02 -
运行
python manage.py runserver 127.0.0.1:8000
-
-
-
多app应用
python manage.py startapp app01 apps/app01 python manage.py startapp app02 apps/app02 -
纯净版
问题:
-
虚拟环境什么时候放在项目目录下?什么时候放在别的地方?
在F:\envs\learning创建环境 在D:\proj项目目录下创建项目 - day01 pip install xxx pip install xxx - day02 - day03在D:\proj项目目录下创建项目 .venv -
打开项目
- 打开项目 - 手动创建虚拟环境(命令行) - pycharm配置项目+环境关联- 打开项目 - 创建虚拟环境 + 项目和环境关联
2.今日概要
- 路由系统
- 视图
- 模板
- 静态文件和媒体文件
- 中间件
- ORM(时间)
3.路由系统
本质上:URL和函数的对应关系。
3.1 传统的路由
from django.contrib import admin
from django.urls import path
from apps.web import views
urlpatterns = [
path('home/', views.home),
path('news/<int:nid>/edit/', views.news),
path('article/', views.article),
]
from django.shortcuts import render, HttpResponse
def home(request):
return HttpResponse("成功")
def news(request, nid):
print(nid)
page = request.GET.get("page")
return HttpResponse("新闻")
def article(request):
nid = request.GET.get("nid")
print(nid)
return HttpResponse("文章")
- int,整数
- str,字符串 /
- slug,字母+数字+下滑线±
- uuid,uuid格式
- path,路径,可以包含 /
3.2 正则表达式路由
- 在django1版本用的多。
- 在django2+版本用的少

3.3 路由分发
假如:200个功能。
inlucde + app(一般),将功能拆分不到不同的app中。

手动路由分发,可以与app无关。
path('user/add/', views.login),
path('user/delete/', views.login),
path('user/edit/', views.login),
path('user/list/', views.login),
path('user/', ([
path('add/', views.login),
path('delete/', views.login), # /user/delete/
path('edit/', views.login),
path('list/', views.login),
], None, None)),
纯粹帮助提取功能的URL,防止重复编写。
importlib模块中的import_module()函数是用来导入模块的
路由分发的本质:
-
URL对应函数
path('user/add/', views.login), -
URL对应元组
path('user/add/', (元素,appname元素,namespance元素) ),path('user/add/', include("apps.api.urls") ), path('user/add/', ([],None,None) ),
小结
include的返回值就是一个元组。([],None,None),所以本质就是直接传入一个元组。
路由分发的三种方式:
- 直接传三个值的元组(‘字符串’,app_name,namespace)
- include函数传入两个值的元组,include(([分发列表,app_name]))
- include函数传入对应的urls字符串,include(‘apps.web.urls’)
-
include或手动元组列表,本质相同。
-
应用场景和意义,想要把一些URL前缀提取出来。


最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



