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\DjangoProject
Mode 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\mysite
Mode 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\mysite
Mode 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\app01
Mode 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>