PyCharm端操作
新建python项目PyShop
项目中的Terminal运行
pip install Django
启动测试服务器
python3 manage.py runserver
启动后可在http://127.0.0.1:8000 或http://localhost:8000 中查看
创建Django项目文件
#新建项目PyShop的小写同名文件
django-admin startproject pyshop .
新建应用程序
#生成应用程序products
python3 manage.py startapp products
前端和后端连接的桥梁:views.py和urls.py需要结合使用
- views用于处理来自浏览器的请求并返回响应。
# 导入HttpResponse和render函数
#HttpResponse类表示HTTP响应,可以用于返回文本、HTML、JSON等内容。
from django.http import HttpResponse
from django.shortcuts import render
# 定义视图函数
def index(request):
# 返回一个HttpResponse对象,内容为'Hello World'
return HttpResponse('Hello World')
def about(request):
return HttpResponse("关于")
- URL路由映射(可以全写在总urls,但是不建议。分开利于管理和解耦)
- 在应用程序里新建urls.py做内部的URL路由映射
# 导入path函数和当前应用程序的views模块
from django.urls import path
from . import views
# 定义应用程序的URL路由
urlpatterns = [
# 空路径映射到index视图函数(views.py里面的index函数),使用名称为'index'的路由
#127.0.0.1:8000/products映射views中的index
path('', views.index, name='index'),
# 127.0.0.1:8000/products/about/映射到about视图函数,使用名称为'about'的路由
path('about/', views.about, name='about'),
]
- 在应用程序中添加路由后别忘了将应用程序和Django项目文件夹下的总的urls路由连接,不然应用程序中的url无法被加载到
# 导入path函数和include函数
from django.urls import path, include
# 定义应用程序的URL路由
urlpatterns = [
# 将admin/路径映射到Django默认的管理站点
path('admin/', admin.site.urls),
# 将products/路径映射到products应用程序的urls.py文件
# include函数用于包含其他应用程序的URL路由
path('products/', include('products.urls'))
]
views中做好处理响应和urls映射好之后,便可在http://127.0.0.1:8000/products 查看成果
模型models.py(操作数据库)
(这里用到的框架有点像java的Hibernate。)
- 利用django.db的models模块创建模型
# 引入 Django 的 models 模块
from django.db import models
# 定义 Product 模型类,继承自 models.Model
class Product(models.Model):
# 定义 name 字段,使用 CharField 类型,长度为 255,以此类推
name = models.CharField(max_length=255)
price = models.FloatField()
stock = models.IntegerField()
image_url = models.CharField(max_length=2083)
通过定义模型类,Django 可以自动创建相应的数据库表以及表的列,并提供了一些内置的方法,如 create、save、update等方法,使得开发者可以很方便地进行数据库操作。
- db.sqlite3:创建Django项目时生成的轻量级SQLite 数据库文件,数据存储在本地磁盘(可选其他数据库)
**
db.sqlite3
**文件是 Django 项目中默认的数据库文件名,它位于项目的根目录中,并存储着项目中所有模型类对应的数据表以及表中的数据。在项目启动时,Django 会根据模型类定义自动创建或更新相应的数据表,并将数据存储到该文件中。
💡 如果需要更换数据库,需修改项目的 **settings.py
文件中的DATABASES
**配置,来指定新的数据库引擎、数据库名称、用户名和密码等信息。同时,还需要在新的数据库中创建与项目中模型类对应的表,以便 Django 能够正确地读取和写入数据。
- 数据迁移(每当新建或修改模型后,需要再次操作这个步骤来刷新数据库的表结构)
- 生成迁移脚本
python3 manage.py makemigrations
#运行后生成products/migrations/0001_initial.py,可自行查看相应数据库列名
当运行 **
makemigrations
**命令后,Django 会检测模型类的变化,并根据变化生成一个迁移脚本。这个迁移脚本包含了对数据库进行操作的指令,比如创建新表、删除表、添加字段、删除字段等。
💡 报No changes detected要么就是没有需要更改的,要么就是没有在项目的settings.py文件中注册你的app名。可以在INSTALLED_APPS中添加对应的app名,然后再运行该makemigrations命令。这样应该可以生成迁移文件。如这里需要在settings.py添加products.apps.ProductsConfig
(products中的apps.py中的ProductsConfig)
- 将迁移脚本应用到数据库
python3 manage.py migrate
Django migrate默认创建的那些表包括:
auth_group
:存储用户组的信息,包括组名和权限等级。auth_user
:存储用户的信息,包括用户名、密码、电子邮件地址等。auth_user_groups
:用户和用户组之间的关联表,用于将用户添加到用户组中。auth_permission
:存储权限信息,包括应用名称、模型名称、权限名称等。django_admin_log
:用于记录管理员在管理站点中的操作日志。django_content_type
:存储模型的信息,包括应用名称、模型名称等。django_migrations
:用于记录数据库迁移的信息。django_session
:存储会话信息,用于跟踪用户的登录状态等。这些表是 Django 内置的,用于支持一些常见的功能,例如认证、授权、管理站点等。其中
auth_user
、auth_group
、auth_permission
表是认证和授权的关键组件,而django_admin_log
表则用于记录管理员的操作,方便追溯和审计。django_migrations
表记录了数据库迁移的历史记录,django_session
表用于存储会话信息,而django_content_type
表则提供了一个动态获取模型信息的接口,方便实现一些通用的功能,例如菜单栏、搜索、导航等。