django中的常用操作技巧
一个mtv 思想 model template view
安装 pip3 install django
创建一个工程
直接在一个命令行,不是在python的命令里
django-admin startproject mysite
运行工程
python manage.py runserver
访问 127.0.0.1:8000
加载一个app网页 在manage的同级目录
python manage.py startapp polls
django的路由
在mysite 的url的路径中直接加入
# 这里相当就是路由
urlpatterns = [
url(r'^polls/', include('polls.urls')),
url(r'^admin/', admin.site.urls)
]
然后在app的项目文件里直接添加
urls 里设置就可以了
views 设置去哪找实现什么功能
def login(request):
return HttpResponse('login') # 返回一个字符串
rander_to_response('index.html',data) #返回的页面和跳转的路径
redirect(/app01/index/) 这里写的跳转的路径 路由的地址
链接数据库
先要创建一个数据库的名字 Django是不会自己创建数据库的
1.先在模型里写入表和字段 让框架知道你用的什么数据库
class UserInfo(models.Model):
username = models.CharField(max_length=50)
passwd = models.CharField(max_length=50)
2.在settings里配置数据mysql
DATABASES = { 'default': { #'ENGINE': 'django.db.backends.sqlite3', 默认是这样 #'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), 'ENGINE': 'django.db.backends.mysql', 'NAME': 'day1', 'USER': 'root', 'PASSWORD': '', 'HOST': '127.0.0.1', 'PORT': '3306', } }
3.需要在 INSTALLED_APPS 里建立关联 'web',
4.执行两个命令
在主配置的 init文件里写上
import pymysql
pymysql.install_as_MySQLdb()
然后在命令端运行两个指令
python manage.py makemigrations 当有新的表建立连接的时候需要
python manage.py migrate
在__init__ 里加入
import pymysql
pymysql.install_as_MySQLdb()
然后manage.py 同级目录下运行两个命令
运行命令就生成表 要是修改了表也需要重新生成
python manage.py makemigrations
python manage.py migrate
这里注意一下 要是想在原来的表里在添加一条address
这里必须得写default 否则是不让添加的
address = models.CharField(max_length=50,default='')
这里说一下 django的模型字段
id = models.AutoField(primary_key=True) 默认就是这样
BooleanField 布尔值类型。默认值是None。
IntergerFiled 整数型
CharField 字符串类型。必须接收一个max_length参数。
TextFiled 可以存多个字符 longtext
CommaSeparatedIntegerField
逗号分隔的整数类型。必须接收一个max_length参数。
常用于表示较大的金额数目,例如1,000,000元
DateField
class DateField(auto_now=False, auto_now_add=False, **options)
日期类型。
auto_now:每当对象被保存时将字段设为当前日期,常用于保存最后修改时间。
注意,只有在使用save()方法时才更新,其它操作不更新。
auto_now_add:每当对象被创建时,设为当前日期,常用于保存创建日期。
注意,它是不可修改的。
EmailField
class EmailField(max_length=254, **options)
邮箱类型。
unique:true时,在整个表内该字段的数据不可重复。
primary_key:主键。设置为True时,当前字段变为主键,并关闭Django自动生成的id主键功能。另外,主键字段不可修改,如果你赋个新值则会创建个新记录。
from django.db import models
class Fruit(models.Model):
name = models.CharField(max_length=100, primary_key=True)
FileField
class FileField(upload_to=None, max_length=100, **options)
上传文件类型
表之间的一对多
class UserType(models.Model): name = models.CharField(max_length=50) class UserInfo(models.Model): username = models.CharField(max_length=50) password = models.CharField(max_length=50) address = models.CharField(max_length=50, default='') age = models.IntegerField(default='18') memo = models.TextField(default='信息') createDate = models.DateTimeField(default='2016-12-12 12:12')
# 两个表建立外键表关联索引 1对多
typeId = models.ForeignKey('UserType')
两个表直接没有办法多对多 所以需要第三个表
user group user_group
id name id groupname nid groupid userid
1 A 1 ceo 1 1 1
2 B 2 eco 1 2 1
3 C
视图加载新的写法
from . import views
在模板的渲染里面导入包要这样使用
url(r'^add/(?P<name>\d*)/$', views.Add),
原生的sql语句一对多建立外链接
create table banji(
id int auto_increment primary key,
banjihao varchar(10) unique key,/*唯一的班级名字*/
banzhuren varchar(10) comment '班主任',
open_date date comment '开班日期'
);
#写第二个表
create table b_xuesheng(
s_id int auto_increment primary key,
name varchar(10),
age tinyint,
banji_id int comment'班级id',
foreign key (banji_id) references banji(id)/*这个id就对应着上面班级的id*/
);
访问html路径需要导入 render 这个包
from django.shortcuts import render
添加静态的文件需要设置 seeting里的templates DIRS
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [
os.path.join(BASE_DIR,'public') #基础的路径加上现在静态模板的路径
],
django
orm 对象 关系 映射
数据库的表和实体一一对应
对数据库的增删查改
1.先要在view里倒入模型里定义的方法
创建管理员用户
首先,通过下面的命令,创建一个可以登录admin站点的用户:
$ python manage.py createsuperuser
输入用户名:
Username: admin
输入邮箱地址:
Email address: admin@example.com
输入密码:
Password: **********
Password (again): *********
Superuser created successfully.
注意:Django1.10版本后,超级用户的密码强制要求具备一定的复杂性,不能再偷懒了。
bolg 后台账号 admin 登陆密码 python123
不管是一对一还是一对多都是跨表操作
跨表查询用__ 两个下划线 垮表取用 .
数据的获取 all,get(获取一个) filter(获取过滤的数据)