Django命令相关

下载Django

1
pip install django

创建Django

1
django-admin startproject <project-name> (可选)<IP:端口号>

运行Django

1
python manage.py runserver

创建应用

1
python manage.py startapp <app-name>

配置应用url

1
2
# urls.py
path('<prefix/>', include('<app>.urls'))

生成迁移文件

1
python manage.py makemigrations

迁移文件

1
python manage.py migrate

DjangoMTV

模型类

字段类型

1
2
3
4
5
6
7
8
9
BooleanField()
CharField() # varchar 必须指定max_length
DateField() # auto_now/auto_now_add/default多选一
FloatField()
DecimalField() # max_digits/decimal_places
EmailField() # varchar
IntegerField() # int
ImageField() # varchar(100) 存储路径
TextField() # longtext

字段选项

1
2
3
4
5
6
7
8
primary_key # 主键
blank # 后台控制 False:必须非空
null # 若False建议与default联用
default
db_index # True:该列增加索引
unique # True:该字段在数据库中的值必须是唯一
db_column # 指定列的名称
verbose_name # admin界面上的显示名称

Meta类

  • 内部Meta类来给模型赋予属性
1
2
3
db_table # 数据表名
verbose_name # admin管理后台显示的名称(单数)
verbose_name_plural # admin管理后台显示的名称(复数)

部署

uWSGI

  • 下载uwsgi

    1
    pip install uwsgi
  • 添加配置文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    [uwsgi]
    # http=127.0.0.1:8000
    socket=127.0.0.1:8000
    chdir=.../project
    wsgi-file=project/wsgi.py
    process=1
    threads=2
    pidfile=uwsgi.pid
    daemonize=uwsgi.log
    master=true
  • 修改setting.py

    1
    2
    DEBUG=False
    ALLOWED_HOSTS=['网站域名','监听的IP']
  • 启动uwsgi

    1
    uwsgi --ini uwsgi.ini
  • 查看uwsgi

    1
    ps aux | grep 'uwsgi'
  • 停止uwsgi

    1
    uwsgi --stop uwsgi.pid

    nginx

1
2
3
4
5
6
7
location / {
uwsgi_pass 127.0.0.1:8000
include /etc/nginx/uwsgi_params
}
location /static{
root /home/project_static
}

邮件告警

1
2
3
# setting.py
ADMINS = [('ray', 'ray@example.com')]
SERVER_EMAIL = 'email配置中的邮箱'
  • 过滤敏感信息

    1
    2
    3
    4
    5
    6
    7
    8
    # 局部变量
    # 装饰器必须放在最上方
    # 不传参,过滤所有局部变量
    from django.views.decorators.debug import sensitive_variables

    @sensitive_variables('password')
    def login(user):
    password = user.password
  • 过滤POST数据

    1
    2
    3
    4
    5
    from django.views.decorators.debug import sensitive_post_parameters

    @sensitive_post_parameters('password')
    def login(request):
    user = User(request.POST['username'], request.POST['password'])