django tips

Ikko Lv3

创建虚拟环境stu

python -m venv stu
stu/Scripts/Activate #启动虚拟环境
cd crashcourse

新建django项目

1
2
pip install django
django-admin startproject xxx

新建django app

1
python manage.py startapp xxx

启动django

.\manage.py runserver
python manage.py runserver

配置数据库:

1
2
3
4
5
6
7
8
9
10
 DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'bookstoredb',
'USER': 'root',
'PASSWORD': '123456',
'HOST': '127.0.0.1',
'PORT': '3306',
}
}

创建超级用户

python manage.py createsuperuser

1
2
3
4
5
6
7
8
9
10
11
12
13
import random
random.randint(1,120)
from django.db import models

class Person(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
==
CREATE TABLE myapp_person (
"id" serial NOT NULL PRIMARY KEY,
"first_name" varchar(30) NOT NULL,
"last_name" varchar(30) NOT NULL
);

数据库更新:

1
2
python manage.py makemigrations
python manage.py migrate

ot Found: /favicon.ico #访问网页时找不到图标

使用表单模板
您只需将表单实例放到模板的上下文中即可。因此,如果您的表单在上下文中叫 form ,那么 将渲染它相应的 <label> 和 <input> 元素。https://docs.djangoproject.com/zh-hans/3.2/topics/forms/
使用表单中的值:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
from django.core.mail import send_mail

if form.is_valid():
subject = form.cleaned_data['subject']
message = form.cleaned_data['message']
sender = form.cleaned_data['sender']
cc_myself = form.cleaned_data['cc_myself']

recipients = ['info@example.com']
if cc_myself:
recipients.append(sender)

send_mail(subject, message, sender, recipients)
return HttpResponseRedirect('/thanks/')

Meta 选项
使用内部 Meta类 来给模型赋予元数据,就像:

from django.db import models

class Ox(models.Model):
horn_length = models.IntegerField()

class Meta:
    ordering = ["horn_length"]
    verbose_name_plural = "oxen"

模型的元数据即“所有不是字段的东西”,比如排序选项( ordering ),数据库表名( db_table ),或是阅读友好的单复数名( verbose_name 和 verbose_name_plural )。这些都不是必须的,并且在模型当中添加 Meta类 也完全是可选的。

在 模型可选参数参考 中列出了 Meta 可使用的全部选项。

Model signals -models信号机制

2 pre_init # django的modal执行其构造方法前,自动触发
3 post_init # django的modal执行其构造方法后,自动触发
4 pre_save # django的modal对象保存前,自动触发
5 post_save # django的modal对象保存后,自动触发
6 pre_delete # django的modal对象删除前,自动触发
7 post_delete # django的modal对象删除后,自动触发
8 m2m_changed # django的modal中使用m2m字段操作第三张表(add,remove,clear)前后,自动触发
9 class_prepared # 程序启动时,检测已注册的app中modal类,对于每一个类,自动触发
10 Management signals
11 pre_migrate # 执行migrate命令前,自动触发

12 post_migrate # 执行migrate命令后,自动触发
13 Request/response signals
14 request_started # 请求到来前,自动触发
15 request_finished # 请求结束后,自动触发
16 got_request_exception # 请求异常后,自动触发
17 Test signals
18 setting_changed # 使用test测试修改配置文件时,自动触发
19 template_rendered # 使用test测试渲染模板时,自动触发
20 Database Wrappers
21 connection_created # 创建数据库连接时,自动触发

数据库为空需要null = True,blank = True
bootstrap将页面12等分,copy class里内容 div来确定比例
limit_choices_to={‘pid__exact’: 0}
province = models.ForeignKey(
“china”, blank=True, null=True, verbose_name=’省份’, limit_choices_to={‘id__in’: [‘11’, ‘12’, ‘13’]}
)

  • Title: django tips
  • Author: Ikko
  • Created at : 2023-01-03 15:41:05
  • Updated at : 2023-01-15 20:07:05
  • Link: https://redefine.ohevan.com/2023/01/03/django-tips/
  • License: This work is licensed under CC BY-NC-SA 4.0.
 Comments
On this page
django tips