一、Django基础

1.1 基础

Django是一个开源的、重量级的WEB开发框架。

Django的官网: https://www.djangoproject.com

1.2 安装与卸载 Django

Django目前最新的版本为4.2,教学环境使用3.2

1.2.1 在线安装


sudo  pip3 install django==版本号

说明:上述命令中版本号可以省略,如果省略的话,则安装最新的版本。

1.2.2 离线安装


tar -zxvf Django-3.2.20.tar.gz
cd Django-3.2.20
sudo python3 setup.py install

1.2.3 查看Django版本


python3 -m django --version

1.2.4 卸载Django


sudo pip3 uninstall django

二、创建项目

2.1 创建项目

Django中创建项目分为以下三步:

第一步:创建项目,其命令如下:


django-admin startproject helloDjango

其中:

  • django-adminDjango的命令行管理工具,用于对Django项目执行某些命令操作。
  • helloDjango是项目的名称,只要为合法的名称即可。

第二步:启动项目,命令如下:


# 切换到项目目录内
cd helloDjango

#运行项目

python3 manage.py runserver

第三步:访问项目

启动浏览器,然后在地址栏输入http://127.0.0.1:8000

2.2 Django项目的目录结构

创建Django项目后,其目录结构如下:


helloDjango/
├── db.sqlite3
├── helloDjango
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── manage.py

这些目录和文件的作用是:

  • 最外层的helloDjango目录是项目的根目录,也是项目的容器
  • manage.py是一个管理Django项目的命令行工具,其基本用法是:

    
    python3 manage.py subcommand
    

    subcommand包括:

    runserver [addport],启动用于开发的轻量级的WEB服务器

    常用的端口号:

    http协议 80

    MySQL的端口号 3306

    FTP协议 21

    startapp ,在当前目录或指定目录中创建应用

  • 内层的helloDjango目录包含项目文件,它是一个纯Python包。
  • helloDjango/settings.pyDjango项目的配置文件
  • helloDjango/urls.pyURL调度器(也称为路由配置文件)
  • helloDjango/wsgi.py,运行在WSGI兼容的WEB服务器上的入口

2.3 Django配置

Django的配置信息存储在settings.py文件中。


# 当前项目的绝对路径
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

# 密钥
SECRET_KEY = 'd!9((sy&ge3!=u0zc$u_#ba@ok1=%2pg+xnws2=t+c@s_7-(6c'

# 是否开启调试模式,建议:在开发环境开启调试模式,生产环境关闭
DEBUG = True

# 已安装并启用的应用程序(Application)列表
INSTALLED_APPS = [ ]

# 已安装的中间件(Middleware)列表
MIDDLEWARE = []

# 根 URL 调度器的完整路径
ROOT_URLCONF = `helloDjango.urls`

# 模板的配置
TEMPLATES = []

# 数据库配置
DATABASES = []

# 语言代码
LANGUAGE_CODE = 'zh-Hans'

# 时区
TIME_ZONE = 'Asia/Shanghai'

三、 URL调度器/URL路由

为了给一个应用程序设计URL,需要创建一个Python模块,通常被称为URLConf( URL configuration,URL配置)。其作用是包含 URL 模式到Python函数(称为视图函数)的映射关系。

URL路由三部曲:

第一步:先在urls.py中定义路由,并且指定视图函数

第二步:定义路由需要访问的Python函数(视图函数)

第三步:通过浏览器进行访问

1689824109849.png

HttpResponse对象位于django.http模块内


from django.http import HttpResponse

urls.py的代码如下:


from django.contrib import admin
from django.urls import path

from django.http import HttpResponse

def hello(request):
    return HttpResponse('<h1>Hello呀</h1>')

urlpatterns = [
    path('admin/', admin.site.urls),
    path('hello/',hello),
]

此时即可以通过http://127.0.0.1:8000/hello进行访问

3.1 path() 函数

path() 函数的作用是返回一个元素,以便包含在urlpatterns中,该函数位于django.urls模块内,其语法结构是:


path(route,view,kwargs=None,name=None)
  • route 参数是一个匹配URL规则的字符串,当Django在处理请求时,它会从urlpatterns的第一项开始,按顺序依次匹配列表中的项,直到找到为止。匹配的原则是:匹配即停止
  • view参数是一个视图函数的名称,视图函数用于处理用户的请求,并且返回响应。该视图函数必须将HttpRequest对象作为第一个参数,参数建议以request命名,其语法结构是:

    
    def view_function_name(request[,argument[,...]]):
        ...
        ...
    

    说明:

    • request代表HTTP请求对象
    • argument代表可选参数,表示的的是从URL中传递的参数
  • kwargs代表向模板传递的参数,必须在字典(dict)
  • name代表为url命名,以便Django在任意地方可以唯一引用它

3.2 路径转换器

Django中的路径转换器用于捕获URL模式中特定部分的值,并将其作为参数传递给视图函数。路径转换器包括以下几种:

1689837257436.png

1689840343443.png

  • 整数,匹配0及其他正整数,返回int

    <int:parameter_name>,如:

    
    # urls.py中的代码
    
    def article(request,id):
        return HttpResponse('文章详情')
    
    urlpatterns = [
        path('article/<int:id>',article)
    ]
    
    
  • 字符串,匹配除了/之外的任何非空字符串,直到遇到下一个斜线为止

    <str:parameter_name>,如:

    
    def user(request,username):
        return HttpResponse(f"username is: {username}")
        
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('user/<str:username>',user),     
    ]
    
  • 路径,匹配非空字符串,包括路径分隔符(/)

    <path:parameter_name>,如:

    
    def detail(request,path):
        return HttpResponse(f"path is: {path}")
       
        
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('detail/<path:path>',detail),      
    ]
    
  • uuid,匹配UUID格式的字符串,其格式为8-4-4-4-12

    <uuid:parameter_name>,如:

    
        
    def uuid(request,id):
        return HttpResponse(f"uuid is: {id}")
        
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('book/<uuid:id>',uuid)       
    ]
    
    
  • slug,匹配任何的ASCII字母,数字、短横线及下划线,

    <slug:parameter_name>

3.3 URL调度器/URL路由的工作流程

1689843073633.png

强烈建议:所有的视图函数存储在views.py文件内。

四、考一考

1.什么Django的路由系统?

Django中的路由系统是一个将 URL 模式到Python函数(称为视图函数)的映射关系的机制。

2.路由系统中有哪些路径转换器?

<int:pararameter_name>

<str:paramenter_name>

<uuid:parameter_name>

<path:parameter_name>

<slug:parameter_name>

3.路由系统中如何传递参数?

路由系统中通过路径转换器传递参数,需要强调的是:在视图函数中也必须存在同名的参数,以接收路径转换器传递来的参数。


urlpatterns = [
    path('user/<int:id>/name/<str:name>',userinfo)
]

对应的视图函数则需要书写成:

from django.http import HttpResponse

def userinfo(request,id,name):
    ...
    ...

所有的视图函数必须将HttpRequest对象作为第一个参数传递;

所有的视图函数都必须返回HttpResponse(HTTP响应),该对象的构造函数结构是:


HttpResponse(content=b'',content_type=None,status=200)
最后修改:2024 年 11 月 09 日
如果觉得我的文章对你有用,请随意赞赏