Day/2
模型:
mysql数据库服务端软件安装:sudo apt-get install mysql-server
mysql数据库命令行客户端安转:sudo apt-get install mysql-client
数据库操作基本流程:
-
创建数据库 (create database 数据名称 charset=utf8;)
-
使用数据库 (use 数据库名称)
-
创建表
ORM框架:“o”——》类对象 “m”——》映射 “r”——》关系
数据库的表——》类
数据库中的行——》对象
数据库中的字段——》属性
“重点内容”:
-
定义模型时,必须继承Model类
django只需在model内编写自动创建
class BookInfo(models.Model):"""1. 主键会自动生成"""name = models.CharField(max_length=10) # 最大长度class PeopleInfo(models.Model):# 人名name = models.CharField(max_length=10)# 性别gender = models.BooleanField()# 外键book = models.ForeignKey(BookInfo)
-
定义属性时,语法格式:属性=models.字段类型(选项)
django字段类型:https://www.cnblogs.com/jingzaixin/p/8670094.html
-
需要执行两句指令:
在pycharm的命令行中输入指令
一、生成迁移文件
python manage.py makemigrations
二、同步到数据库中
python manage.py migrate
-
-
登录站点http://127.0.0.1:8000/admin
第一次登录后是无账号无密码的,需要手动创建,密码长度要8位,切包含数字和字母
指令: python manage.py createsuperuser
注册模型类:admin.site.register(模型类) 在admin.py文件中
from django.contrib import admin from users.models import BookInfo,PeopleInfo # Register your models here.# 注册书籍模型类 admin.site.register(BookInfo) # 注册人物模型类 admin.site.register(PeopleInfo)
遇到一个问题,在后台新增数据时,生成的效果都是BookInfo object,无法区分!
方法:指定打印出str()函数
def __str__(self):# 重写str函数,动态显示示例属性的值return self.name
总结:
-
设置后台中文显示,注册管理员账户
-
注册模型表
-
重写str函数
-
视图: views.py文件
http://127.0.0.1:8000/users/index运行
视图的概念:就是一个写在views.py中的python函数
特点:
-
视图函数必须要有一个参数,接收request请求对象,且写在第一个
-
视图函数必须要有响应对象
注意:先从demo查到urls.py,在从urls.py查到users子应用,还能找得到,就找子应用里的urls.py查到views.py
demo中的urls.py
from django.conf.urls import url, include
from django.contrib import admin# 路由
urlpatterns = [url(r'^admin/', admin.site.urls),# include函数url(r'^users/', include('users.urls')),
]
子应用users里的urls.py
from django.conf.urls import url
from users.views import indexurlpatterns = [url(r'^index/', index),
]
子应用users中的views.py
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.# 定义一个视图函数
def index(request):return HttpResponse('这是第一次写视图函数')
路由URL:
-
查找规则从上至下,会有屏蔽效应,解决的方法:正则内最后加个$符号即可,但是一般是在子路由里加,工程总路由不加。
urlpatterns = [url(r'say$', views.say),url(r'sayhello$', views.sayhello), ]
-
urlpatterns 是固定写法,不能更改
模板:
作用:将前端的代码抽离出来,定义在模板中,降低耦合度
“模板的使用步骤”:
-
创建模板,在子应用的同级目录下,文件夹的名字固定写法:templates
-
设置模板的路径
-
模板接收视图传入的数据
-
模板处理数据
在settings配置文件中‘template’的DIRS中添加os.path.join(BASE.DIR, ‘templates’)表示固定到指定文件下寻找。