1、【django5笔记】 基础知识与逻辑
系统: ubunt 22.04.4 LTS
1、确保python版本为3.10以上
python3 -V
2、创建虚拟环境
python3 -m venv test_venv
cd test_venv
source bin/activate # 进入虚环境
pip -V # 确认虚环境下pip可用
3、安装django
python -m pip install --upgrade pip
pip install django
4、创建django项目
django-admin help # 可以查看管理工具的用法
djang-admin startproject test_project # 创建django项目test_project
5、创建应用
这将会创建一个基本的应用结构,包括models.py、views.py和urls.py等文件
cd test_project
django-admin startapp test_app
# vim setting,与项目的安全和功能相关
INSTALLED_APPS中添加 "test_app"
DEBUG = TRUE # 开发环境可以使用调试模式,生产环境建议置为FALSE
ALLOW_HOSTS = [] # 添加白名单
MIDDLEWARE = […] # 默认中间件,可不调整
TEMPLATES = […] # 模板
DATABASES = {} # 数据库连接设置,包含指定引擎
STATIC_URL = 'static/' # 静态资源指定
补充释义:
# 静态文件的 URL 路径
STATIC_URL = '/static/'
# “/static/”是域名的根路径下,为绝对路径;“static/” 为相对路径,
# 例如:在某个特定的路径下(比如 http://example.com/somepath/)使用 {% static %} 模板标签,那么静态文件将会通过 http://example.com/somepath/static/ 来访问
#
# 静态文件的文件系统路径
STATICFILES_DIRS = [
BASE_DIR / "static", # 这将对应项目根目录下的 static 文件夹
# 如果有其他应用特定的静态文件目录,也可以在这里添加
# 例如:BASE_DIR / "my_app" / "static",
]
# 当你运行 python manage.py collectstatic 命令时, 所有静态文件都会被收集到这个目录下
STATIC_ROOT = BASE_DIR / "staticfiles" # 用于生产环境
DEFAULT_AUTO_FIELD = '…'
# vim views.py # 配置视图
将需要执行的操作渲染成UI界面
使用步骤:
1. 导入所需的模块和模型
首先,你需要导入 Django 视图相关的模块(包含自定义模块)以及可能需要处理的数据模型(包含自定义模型)。
# eg:
查看代码
from django.http import HttpResponse
from .models import MyModel
2. 定义视图函数:
2.1 定义一个简单的视图函数,它接受一个 HttpRequest 对象作为参数,并返回一个 HttpResponse 对象。
# eg:
查看代码
def my_view(request):
# 视图逻辑
return HttpResponse("Hello, world!")
2.2 通常,你会使用 render 函数来渲染一个模板,并将上下文数据传递给它。
# eg:
查看代码
from django.shortcuts import render
def my_view(request):
context = {'message': 'Hello, world!'}
return render(request, 'my_template.html', context)
# 这里,my_template.html 是模板的文件名,context 是一个字典,包含了传递给模板的数据。
2.3 如果你的视图需要处理表单数据,你可以这样做:
# eg:
查看代码
from django.shortcuts import render, redirect
def my_form_view(request):
if request.method == 'POST':
# 处理表单数据
form = MyForm(request.POST)
if form.is_valid():
# 处理表单数据
form.save()
return redirect('success_url')
else:
form = MyForm()
return render(request, 'form_template.html', {'form': form})
2.4 除了基于函数的视图,Django 还支持基于类的视图。
# eg:
查看代码
from django.views.generic import ListView, DetailView
class MyListView(ListView):
model = MyModel
template_name = 'my_list_template.html'
class MyDetailView(DetailView):
model = MyModel
template_name = 'my_detail_template.html'
2.5 示例
# eg:
查看代码
from django.shortcuts import render, HttpResponse
def index(request):
return HttpResponse("Welcome to the index page.")
def about(request):
context = {'about_us': 'We are a Django tutorial website.'}
return render(request, 'about.html', context)
# vim urls.py 配置应用程序的URL路由,这决定了URL会指向哪个视图
将视图与URL进行绑定,实现UI交互
使用步骤:
在 urls.py 文件中为你的视图定义 URL 模式
查看代码
from django.urls import path
from . import views
urlpatterns = [
path('my_view/', views.my_view, name='my_view'),
# 参数分别为: 'URL', '视图函数', '视图名(即路由的最末端的字段)'
# ... 其他 URL 模式
]
# vim models.py 用于设置应用的模型
使用步骤:
1.定义模型
每个模型都是 django.db.models.Model 的一个子类。每个模型类都代表数据库中的一个表
# eg:
查看代码
from django.db import models
class Author(models.Model):
name = models.CharField(max_length=100)
age = models.IntegerField()
class Book(models.Model):
title = models.CharField(max_length=200)
authors = models.ManyToManyField(Author)
published_date = models.DateField()
isbn = models.CharField(max_length=13)
# 补充字段类型:
Django 提供了一系列字段类型,用于定义模型中的不同类型的字段:
• CharField: 字符串字段。
• IntegerField: 整数字段。
• DateField: 日期字段。
• DateTimeField: 日期和时间字段。
• ForeignKey: 外键,用于定义多对一关系。
• ManyToManyField: 多对多关系。
• BooleanField: 布尔字段。
...
# 字段选项:
每个字段都可以接受一组选项,例如:
• max_length: 字段的最大长度。
• null: 是否允许为空。
• blank: 是否允许空白。
• default: 默认值
2. 元数据选项
在模型类中,你可以定义 Meta 内部类,用于设置模型级别的元数据:
# eg:
查看代码
class Book(models.Model):
# 字段定义...
class Meta:
db_table = 'my_books' # 指定数据库表名
ordering = ['title'] # 指定默认排序字段
3.模型方法
可以在模型中定义自定义方法来执行与模型相关的操作:
# eg:
查看代码
class Author(models.Model):
# 字段定义...
def get_books(self):
return self.book_set.all() # 获取所有相关书籍
每定义一个模型后,都需要生成迁移文件:
python manage.py makemigrations # 生成迁移文件: 新增模型后、启动应用前必须步骤
然后运行迁移:
python manage.py migrate # 启动应用前必须步骤
6、运行应用迁移
启动应用前确保数据表已经创建,需要运行以下命令迁移
python manage.py migrate
7、创建用户
python manage.py createuser # 按以下提示输入账号,及绑定邮箱(邮箱可随意书写)
# user:
# email:
# passwd:
# entry passwd:
8、启动服务
python manage.py runserver # 默认8000端口,如需更换端口可另外采用nginx进行监听端口