1. django 安装
默认大家装有python
我机子上自带python2.7
所以下载了django1.11.15版本
下载后,随意解压到某个文件夹
// 完成后验证是否成功
// python shell 下输入
import django
print(django.get_version())
// 或者命令行直接输入
python -m django --version
2. django 创建项目及app
django-admin startproject mysite
mysite/settings.py 是整个项目的配置文件
mysite/urls.py 是整个项目的路由文件
随后执行
python manage.py startapp polls // 创建一个app名为polls
polls/models.py 是当前app所对应的数据表结构
polls/views.py 是当前app所对应的页面逻辑
创建一个polls/urls.py 是当前app所对应的路由文件
更改mysite/urls.py,polls/urls.py使app的路由文件生效
mysite/urls.py
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('polls/', include('polls.urls')),
path('admin/', admin.site.urls),
]
polls/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
在urls.py中配置,当路由匹配到之后去执行什么方法
在polls/urls.py 中 匹配到''后执行在views.py中的index方法
注意: 主路由匹配从mysite/urls.py开始,匹配一个将减去一部分, 如上配置当访问localhost:8000/polls/时,先匹配到mysite/urls.py的 polls/ 随后将路由丢给polls/urls.py。此时url被截断为‘’,然后匹配''成功调用views.index的方法
polls/views.py
def index(request):
# 可以在这里进行对数据库的操作
return HttpResponse("Hello, world. You're at the CRUD index.")
在settings.py中注册app,否则之前在polls写的代码不会生效
mysite/settings.py
INSTALLED_APPS = [
... ,
'polls.app.PollsConfig',
...
]
编写polls/models.py
polls/models.py
from django.db import models
# 定义数据字段时,无需定义id自增,django在应用时 会自动添加
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
完成models的定义后,需要使其在数据库中生效
python manage.py makemigrations polls // 告诉django Models已改变
python manage.py sqlmigrate polls 0001 // 查看即将产生的sql语句
python manage.py migrate // 使已改变的Models应用到数据库
此时无论用什么工具查看你的数据时,会有默认生成的各种表,以及刚刚在Models中定义的表。
这里注意一个坑,如果你用的sqlite3, 想要运行查看sqlite3中的表时, 需要将db.sqlite3的绝对路径写入,否则无数据。
数据库操作: 表名.objects.方法名()
Question.objects.get
注意: 这里操作得到的结果为Query Set类型 或Dict类型 ,如果需要对象的话 请使用序列化方法serializers. serialize()
最后运行命令,跑起服务
python manage.py runserver // 默认为8000端口
其实到这里服务就可以跑通了
由于Django自身提供了Admin用户,及操作。
python manage.py createsuperuser // 使用命令创建一个超级用户
然后启动服务器后访问 localhost:8000/admin 即可登陆站点管理
然后在你的app中的admin.py中将models进行注册,然后就可以在站点管理中,可视化的管理该表及其表中数据
polls/admin.py
from django.contrib import admin
from .models import Question
admin.site.register(Question)
附注:
- App/models.py创建字段时 所对应的字段类型
分类 | 模型属性类型 | mysql数据库类型 |
---|---|---|
布尔 | BooleanField | tinyint |
Null | BooleanField | tinyint |
字符 | CharField | varchar |
TextField | longtext | |
数字 | IntegerField | int |
DecimalField | decimal | |
FloatField | double | |
日期和时间 | DateField | date |
TimeField | time | |
DateTimeField | datetime | |
文件 | FileField | varchar |
ImageField | varchar |
各种类型定义时需要传指定的参数,具体参数请自行百度