view编写技巧
model.py编写技巧
models其实就是和数据库相关的操作,是django处理数据的一个特色之处,它包含你的数据库基本字段和数据,通过一些类封装好的api来直接操作数据库,当然你也可以直接写sql语句。
1.首先你要进行数据库的配置,在项目django1/setting.py中找到如下配置:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
Django默认是使用sqlite3数据库,而现在市场占有率最高的是mysql,我们更改成mysql的配置:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'django1',
'USER': 'root',
'PASSWORD': '123456',
'HOST': '10.1.1.43',
'PORT': '3306',
}
}
2.在上面的host服务器上启动mysql,并对上面对应的用户进行授权。
mysql> grant all on *.* to root@'%' identified by '123456';
Query OK, 0 rows affected (0.14 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.20 sec)
mysql> create database django1;
Query OK, 1 row affected (0.38 sec)
django模型的注意事项:
模型必须都是在app下的models.py的文件中
模型如果需要映射到数据库,所在的app必须被安装
模型都必须继承自django.db下的models包的 Model类
python3中使用mysql报错ModuleNotFoundError: No module named 'MySQLdb'
原因是:
在python2.x中用mysqldb,但是在python3.x中已经不支持那个组件了。取而代之的是:
import pymysql
在项目文件夹下的_init_.py中导入pymysq包
import pymysql
pymysql.install_as_MySQLdb()
Django的modules.py
django模型的使用:
- 模型必须都是在app下的models.py的文件中
- 模型如果需要映射到数据库,所在的app必须被安装
- 模型都必须继承自django.db下的models包的 Model类
- 一个表对应一个模型,表中的字段对应模型中的属性
- 映射模型到数据库之前,要提前把数据库给创建好
- 数据库要提前创建好
一个表对应一个模型,表中的字段对应模型中的属性,映射模型到数据库之前,要提前把数据库给创建好。
创建一个模型的类:
# -*- coding: utf-8 -*-
from django.db import models
class linuxtest(models.Model):
name = models.CharField(max_length=100, null=False)
address = models.TextField(null=False)
age = models.IntegerField(null=False)
email = models.EmailField(null=False)
要创建一个映射文件,通过执行以下命令创建:
python manage.py makemigrations linux #后面跟linux是指定linux的app,如果什么都不写,泛指所有models
将映射文件中的映射数据真正提交到数据库中,执行以下命令:
python manage.py migrate linux
id字段django会自动给我们添加,没有写时自动添加,并自动把id作为主键。
注意事项:
如果修改字段或者更改改类,需要重新执行上面的两个命令,但是在pycharm中为了简单执行这两个命令,我们可以做如下设置:
点击Run->Edit Configurations,可以看到我们的django项目,然后点击+号,Name为:makemigrations,选择Custom run command为:makemigrations,Host和Port都为空,如下图所示:
如上相同方式,我们再创建一个migrate,把上面所有makemigrations替换成migrate即可。
运行makemigrations就相当于运行:
python manage.py makemigrations
运行migrate就相当于执行如下命令:
python manage.py migrate
通过在models.py中创建的类,在通过以上两个命令的时候,就被映射到我们数据库中去了,我们只需要创建好表就可以了,创建表,django就自动给我们做好了,而且数据库的操作django已经封装好了,我们只需要通过ORM方式进行调用就可以了。让我们从繁琐的sql语句中解脱出来,更加专注的整理我们的代码逻辑就好了。
更改表名:
class ArticleModel(models.Model):
title = models.CharField(max_length = 100, null = False)
content = models.TextField(null = False)
class Meta:
db_table = 'test_xiang'
在class类下面更改表名,然后执行python manage.py makemigrations和python manage.py migrate,把数据映射到数据库
class linuxtest(models.Model):
name = models.CharField(max_length=100, null=False)
address = models.TextField(null=False)
age = models.IntegerField(null=False)
email = models.EmailField(null=False)
class Meta:
db_table = 'niubi' ##将表名改为niubi
执行命令:
python manage.py makemigrations linux
python manage.py migrate linux
数据库查看表名:
a.修改之前:
mysql> show tables;
+----------------------------+
| Tables_in_django1 |
+----------------------------+
| auth_group |
| auth_group_permissions |
| auth_permission |
| auth_user |
| auth_user_groups |
| auth_user_user_permissions |
| django_admin_log |
| django_content_type |
| django_migrations |
| django_session |
| linux_linuxtest |
+----------------------------+
11 rows in set (0.00 sec)
b.修改后:
mysql> show tables;
+----------------------------+
| Tables_in_django1 |
+----------------------------+
| auth_group |
| auth_group_permissions |
| auth_permission |
| auth_user |
| auth_user_groups |
| auth_user_user_permissions |
| django_admin_log |
| django_content_type |
| django_migrations |
| django_session |
| niubi |
+----------------------------+
11 rows in set (0.00 sec)
本篇到此结束,后面继续补充更新。
本文由 Mr Gu 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: Mar 13, 2018 at 05:37 pm