Django简介
Django是一个高级的、开源的Python Web框架,旨在快速、高效地开发高质量的Web应用程序
https://developer.mozilla.org/zh-CN/docs/Learn/Server-side/Django/Introduction
安装Django
pip install Django
如果要知道安装的Django的版本,可以在命令行工具下输入
python -m django --version
安装完django后的目录结构如下
D:\PythonEv- python.exe- Scripts- pip.exe- django-admin.exe - Lib- 内置模块- site-packages- django
这里会发现Scripts文件夹下多了一个djangon-admin.exe文件,这个可以执行程序的作用是创建django项目中的文件和文件夹。在django项目中会有一些默认的文件和文件夹。
创建Django项目
在终端中创建
在windows的cmd环境中,输入下面的命令:
django-admin startproject mysite
就会在当前目录下创建一个名为mysite的项目
PS D:\MyCode\Python\Web\DjangoProject> django-admin startproject mysite
PS D:\MyCode\Python\Web\DjangoProject> dir目录: D:\MyCode\Python\Web\DjangoProjectMode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2024/4/27 16:48 mysite
进入这个mysite目录下你会发现有一个同名的mysite目录,这个mysite目录是整个项目的配置文件目录,上一个mysite目录是项目的根目录,还有一个manage.py文件,这个是项目的管理脚本。
PS D:\MyCode\Python\Web\DjangoProject> cd mysite
PS D:\MyCode\Python\Web\DjangoProject\mysite> dir目录: D:\MyCode\Python\Web\DjangoProject\mysiteMode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2024/4/27 16:48 mysite
-a---- 2024/4/27 16:48 684 manage.py
PS D:\MyCode\Python\Web\DjangoProject\mysite> cd mysite
PS D:\MyCode\Python\Web\DjangoProject\mysite\mysite> dir目录: D:\MyCode\Python\Web\DjangoProject\mysite\mysiteMode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2024/4/27 16:48 405 asgi.py
-a---- 2024/4/27 16:48 3345 settings.py
-a---- 2024/4/27 16:48 784 urls.py
-a---- 2024/4/27 16:48 405 wsgi.py
-a---- 2024/4/27 16:48 0 __init__.py
项目根目录下,运行python manage.py runserver
,Django会以127.0.0.1:8000
这个默认配置启动项目。
打开浏览器输入127.0.0.1:8000显示下面的页面就说明成功啦
使用Pycharm创建
对比通过终端创建的Django项目和通过Pycharm创建的Django项目,会发现通过Pycharm创建的Django项目多了一个templates文件夹。
这是因为Pycharm在标准的基础上默认加了点东西。这个创建的templates目录可以删除,在setting.py文件中有如下代码
TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates','DIRS': [BASE_DIR / 'templates'],'APP_DIRS': True,'OPTIONS': {'context_processors': ['django.template.context_processors.debug','django.template.context_processors.request','django.contrib.auth.context_processors.auth','django.contrib.messages.context_processors.messages',],},},
]
在终端创建的项目中的settings.py文件里 这行代码'DIRS': [BASE_DIR / 'templates']
的写法是'DIRS': []
。在删除掉templates文件夹后记得要修改这行代码。
创建APP
在Django框架中,app 是指一个具有明确边界和独立功能的模块化组件,在一个Django项目中可以有多个app。
项目和应用有什么区别?应用是一个专门做某件事的网络应用程序——比如博客系统,或者公共记录的数据库,或者小型的投票程序。项目则是一个网站使用的配置和应用的集合。项目可以包含很多个应用。应用可以被很多个项目使用。
通常是将app放在和manage.py同级的目录下。在mysite项目的根目录下输入如下命令(在Pychram中也是要通过Terminal终端通过命令创建)
python manage.py startapp app01
系统就会自动生成app01的目录。app01的结构如下:
PS D:\MyCode\Python\Web\DjangoProject\mysite> python manage.py startapp app01
PS D:\MyCode\Python\Web\DjangoProject\mysite> cd app01
PS D:\MyCode\Python\Web\DjangoProject\mysite\app01> dir目录: D:\MyCode\Python\Web\DjangoProject\mysite\app01Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2024/4/27 17:37 migrations
-a---- 2024/4/27 17:37 66 admin.py
-a---- 2024/4/27 17:37 148 apps.py
-a---- 2024/4/27 17:37 60 models.py 对数据库操作
-a---- 2024/4/27 17:37 63 tests.py 单元测试
-a---- 2024/4/27 17:37 66 views.py 视图函数
-a---- 2024/4/27 17:37 0 __init__.py
快速上手
-
注册app
-
编写URL和视图函数的对应关系
-
编写视图函数
-
运行
这只是一个简单的例子,实际的界面肯定是要加载html文件的,这就要引入模板。
templates模板
在app01目录下创建一个templates文件夹,在这个文件夹中创建了一个index.html文件,将view.py中的index方法修改成如下形式
def index(request):return render(request,"index.html")
Django会根据app的注册顺序,在每一个app的templates文件夹下去寻找index.html文件
静态文件
在开发过程中图片,css,js都会当做静态文件处理。可以在app下创建一个static目录专门存放这些静态文件。
引入静态文件
HTML模板文件的顶部,使用 {% load static %}
标签加载静态文件标签库。然后,使用 {% static %}
标签来引用静态文件的URL
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><link rel="stylesheet" href="{% static "plugins/bootstrap-3.4.1/css/bootstrap.min.css" %}">
</head>
<body>
<img src="{% static "img/img.png" %}" alt=""><div class="dropdown"><button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">Dropdown<span class="caret"></span></button><ul class="dropdown-menu" aria-labelledby="dropdownMenu1"><li><a href="#">Action</a></li><li><a href="#">Another action</a></li><li><a href="#">Something else here</a></li><li role="separator" class="divider"></li><li><a href="#">Separated link</a></li></ul>
</div>
<script src="{% static "js/jquery-3.6.0.min.js" %}"></script>
<script src="{% static 'plugins/bootstrap-3.4.1/js/bootstrap.min.js' %}"></script>
<script>$(".dropdown-toggle").dropdown();
</script>
</body>
</html>