注意
本文最后更新于 2022-09-13 ,文中内容可能已过时。
django运行流程
项目名:mydemo
1
django-admin startproject mydemo
在manage.py
所在目录下执行
1
2
python manage.py migrate
python manage.py createsuperuser
1
python manage.py runserver 0.0.0.0:8000
在__init__.py
中添加
1
2
import pymysql
pymysql . install_as_MySQLdb ()
修改settings.py
1
2
3
4
5
6
7
8
9
10
DATABASES = {
'default' : {
'ENGINE' : 'django.db.backends.mysql' , # 数据库类型
'NAME' : '' , # 数据库名
'USER' : '' , # 数据库用户名
'PASSWORD' : '' , # 密码
'HOST' : '' , # 服务器地址,本地为127.0.0.1
'PORT' : '' , # 端口
}
}
重新迁移一下
1
python manage . py migrate
如果pymysql
使用有问题,可以更换mysqlclient
,安装命令如下
1
pip install mysqlclient
settings.py
配置中不用修改,将上述的__init__.py
清空即可
app
的名字为myapp
1
python manage.py startapp myapp
首先安装一个ipython
打开ipython
输出myapp
创建的表的sql
语句
1
python manage.py sqlmigrate myapp 0001
”三步走策略“:
编辑 models.py
文件,改变模型。
运行 python manage.py makemigrations
为模型的改变生成迁移文件。
运行 python manage.py migrate
来应用数据库迁移。
1
2
3
TIME_ZONE = 'Asia/Shanghai' # 修改时区
USE_TZ = False # 注意改为False时区才生效
在models.py
中定义一个类(对应数据库中的表),每一个对象为对应表中一行记录
1
2
3
4
5
6
7
class Player(models.Model):
id = models.AutoField('编号',primary_key=True) #id自增
username = models.CharField('用户名',max_length=20) # 变量名为列名,备注为'用户'
password = models.CharField('密码',max_length=20)
photo = models.CharField('头像',max_length=100,default='zzzzzzz')
add_date = models.DateTimeField('保存日期', default=timezone.now)
mod_date = models.DateTimeField('最后修改日期', auto_now=True)
在admin.py
中进行注册
1
admin.site.register(Player) # 注册Player表
1.根据定义的列名查找数据
filter
的返回值为一个列表,每一项是一个Player
对象、
get
返回的是
1
2
3
4
5
6
# Django为主键查询提供了一个缩写:pk.下面的语句和Question.objects.get(id=1)效果一样.
>>> Question . objects . get ( pk = 1 )
# 按照id查找
Player . objects . filter ( id = 5 )
# 按照username查找
Player . objects . filter ( username = 'zzz' )
2.根据条件进行查询
1
2
3
4
5
6
7
8
9
# 按照photo的前缀进行查找
Player . objects . filter ( photo__startswith = 'zz' ) # 查询photo列中以zz开头的行
# 查找所有photo前缀不是'zz'的记录
Player . objects . exclude ( photo__startswith = 'zz' ) # 查询photo列中以zz开头的行
# 查询当年添加的记录
cur_year = timezone . now () . year
Player . objects . filter ( add_date__year = cur_year ) # __相当于.
Choice . objects . filter ( question__question_text__startswith = 'W' ) # 多表查询
3.常用API
1
2
3
Player . objects . count () # 记录总数
Player . objects . all () # 所有Player对象
Player . objects . values_list ( 'username' , flat = True ) # 查看某字段的所有不同数据
1
2
from django.contrib.auth.models import User
print ( User . objects . all ())
在shell
中操作
1
2
3
4
user = User . objects . get ( username = 'zfp' )
user . is_superuser = True
user . set_password ( '123456' )
user . save ()
注意要在admin
后台管理界面中将Staff status
勾选上
将app内migrations文件夹里除了__init__.py
这个文件外的所有文件删除。
登录数据库,找到django_migrations
这个表,然后将表内对应的app
下的migrations
记录删除即可。
或者直接删除库
重新执行命令
1
2
python manage . py makemigrations
python manage . py migrate
1
2
3
4
5
6
7
8
9
10
11
12
13
# int ---> str
# 1对应female, 2对应male
place = models.IntegerChoices('place', 'female male')
# str ---> str
# 'A'对应'BEST','B'对应'Pass','C'对应'Failed'
GRADE = (
('A', 'Best'),
('B', 'Pass'),
('C', 'Failed'),
)
grade_level = models.CharField('成绩等级', choices=GRADE, max_length=1)
1
python3 - m django version
在项目根目录下建static
文件夹用来保存所有静态文件。
修改settings.py
引入static
文件夹路径
1
2
3
4
STATIC_URL = 'static/'
STATICFILES_DIRS = (
os . path . join ( BASE_DIR , 'static' ),
)
在html
页面中引入图片
1
2
3
4
5
# 在第一行加入下列语句
{% load static %}
# 引入static文件夹下的images文件夹的apple.png
< img src = {% static ' images / apple . png ' %} >
在settings.py
中添加以下内容
1
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
1
2
3
4
5
6
7
8
ALLOWED_HOSTS = [ '127.0.0.1' ] # 允许127.0.0.1访问
#将允许将cookie包含在跨站点HTTP请求中
CORS_ALLOW_CREDENTIALS = True
#添加允许执行跨站点请求的主机,为True,则将不使用白名单,并且将接受所有来源
CORS_ORIGIN_ALLOW_ALL = True
# 允许所有的请求头
CORS_ALLOW_HEADERS = ( '*' )
导出本项目所有需要安装的模块
1
pip freeze > requirements . txt
安装所有requirements.txt中的模块
1
pip install - r requirements . txt
添加配置文件vue.config.js
:
可以让vue3
将项目打包成一个js
文件和一个css
文件。
1
2
3
4
5
6
7
8
9
10
const { defineConfig } = require ( '@vue/cli-service' )
module . exports = defineConfig ({
transpileDependencies : true ,
configureWebpack : {
// No need for splitting
optimization : {
splitChunks : false
}
}
})