座右铭:怎么简单怎么来,以实现功能为主。
欢迎大家关注公众号与我交流
创建项目和app
pip install django
django-admin startproject demo # 创建项目 demo
cd demo
python manage.py startapp test # 创建APP test
在settings.py 中添加刚刚创建好的app
# settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'test', # 自己创建的app名字,切记已经要加 ',' 号
]
在 settings.py 中设置模板位置
# settings.py
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')], # 配置模板存放的地方
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
在 settings.py 中设置数据库位mysql 或其他,这里为 mysql
# settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'dbtest',
'USER': 'root',
'PASSWORD': '123456',
'HOST': '127.0.0.1',
'PORT': '3306',
}
}
在 settings.py 中设置 静态文件的存放位置
# settings.py
STATIC_URL = "/static/"
STATIC_ROOT = os.path.join(BASE_DIR, "static/root_static") # debug 为false 时需要收集静态文件
STATICFILES_DIRS = [os.path.join(BASE_DIR, "static")]
在 settings.py 中设置 时区 和 后台管理页面的语言
# settings.py
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_L10N = True
USE_TZ = False
后台管理页面取消必填字段
# 只需 在 对应字段里面添加上 blank=True
telse = models.CharField(max_length=999,null=True,verbose_name='其他事情',blank=True)
后台管理页面显示多个字段
# app 下的 admin.py
from django.contrib.auth.admin import UserAdmin
from django.contrib import admin
from test import models
@admin.register(models.User)
class ControlUser(UserAdmin):
list_display = ("username", "zh_uname", "email", "group", "power","proname_id") # 和model的字段对应, proname_id 是外键
list_editable = ["zh_uname", "group", "power"] # 默认可编辑的字段
search_fields = ('username', 'zh_uname', "group", 'email', 'proname__pname') # 过滤器, 外键搜索写法: proname__pname
list_per_page = 10 # 每页展示 n 条记录
ordering = ("-dtime",) # 按哪个字段排序显示
数据库 ORM 过滤数据
ret = models.Book.objects.filter(price__lt=50,price__gt=20) <大于小于>
ret = models.Book.objects.filter(price__in=[66]) <等于>
ret = models.Book.objects.exclude(price__in=[66]) <不等于>
ret = models.Book.objects.filter(name__contains='飞') <包含>
ret = models.Book.objects.filter(name__icontains='飞') <不区分大小写>
ret = models.Book.objects.filter(sale__range=[50,100]) <范围>
ret = models.Person.objects.filter(birth__year=1993) <date字段>