web框架:django基础(二)

django基础(二)

1.回顾

  • 虚拟环境

    不同项目用到不同版本的第三方模块时,才会用到虚拟环境。
    
    pip install virtualenv
    
    virtualenv xxx --python=python3.9
    virtualenv xxx/xx/xxx/xx --python=python3.9
    
    xxx/xx/xxx/xx/activate
    (base)>>>pip
    (base)>>>python
    
    (base)>>>deactivate
    

    注意:以后项目部署时,都需要命令来做。

  • django

    pip install django==3.2
    
    django-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
    
  • 纯净版

问题:

  1. 虚拟环境什么时候放在项目目录下?什么时候放在别的地方?

    在F:\envs\learning创建环境
    在D:\proj项目目录下创建项目
    	- day01
    		pip install xxx
    		pip install xxx
    	- day02
    	- day03
    
    在D:\proj项目目录下创建项目
    	.venv
    
  2. 打开项目

    - 打开项目
    - 手动创建虚拟环境(命令行)
    - 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),所以本质就是直接传入一个元组。

路由分发的三种方式:

  1. 直接传三个值的元组(‘字符串’,app_name,namespace)
  2. include函数传入两个值的元组,include(([分发列表,app_name]))
  3. include函数传入对应的urls字符串,include(‘apps.web.urls’)
  • include或手动元组列表,本质相同。

  • 应用场景和意义,想要把一些URL前缀提取出来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叫我DPT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值