基础
创建项目
- 创建Django项目
1 | django-admin startproject <mysite> |
- 创建app
1 | python manage.py startapp app01 |
- 注册app
- 在项目文件夹下,修改settings.py,在INSTALLED_APPS中添加刚刚创建的app,如app01.apps.App01Config(文件名,name,类名)
1 | INSTALLED_APPS = [ |
- 使用已存在的数据库
1 | python manage.py inspectdb > models.py |
运行项目
运行项目
1 | python manage.py runserver |
切换端口
1 | python manage.py runserver 8080 |
对外网开放
1 | python manage.py runserver 0.0.0.0:8000 |
文件须知
settings.py
- 注册app:INSTALLED_APPS
- 使用app文件夹下的templates文件夹下的html:删除TEMPLATES下面的DIRS列表
- DATABASES:配置需要的数据库
1 | INSTALLED_APPS = [ |
urls.py
编写url与视图函数的对应关系
在项目文件夹下,修改url.py
1 | urlpatterns = [ |
views.py
- 默认会去当前app目录下寻找templates文件夹的test.html
- 可以通过字典的方式传递参数,html中通过两个大括号获取
- 如果参数是一个列表,可以通过列表点的方式获取列表中的某个元素,具体在下面有提及
- 获取请求
- request.GET
- 在url上传值:/something/?x=123&y=321
- request.POST
- 在请求体中提交数据
- 登录form表单中需要添加 大括号% csrf_token %大括号
- request.GET
- 函数返回
- HttpResponse:内容字符串返回给请求者
- render:返回HTML+渲染,最后也是返回字符串给浏览器
- redirect:让浏览器重定向到其他地址
1 | from django.shortcuts import render, HttpResponse |
models.py
- 创建数据库中的表结构
- verbose_name为注解
1 | from django.db import models |
静态文件
在当前app文件夹下创建static文件夹,css,js,img,plugins都放置于此
在当前app文件夹下创建templates文件夹,html文件放置于此
- 第一行为Django语法,加载static文件夹,里面所有的路径都可以使用该语法
1 | {% load static %} |
ORM
连接数据库
- 在settings.py中配置
1 | DATABASES = { |
创建表
- 在当前app文件夹下的models.py中添加类,即为创建表结构
- ORM会自动创建表,表名为app01_userinfo(当前app名字+类名小写),里面的字段名为类中的属性名
- 已创建的表需要新增列的话,需要给定一个默认值,删除列直接删即可(若新列为空,null=True, blank=True)
1 | from django.db import models |
- 执行命令生成表
- 当前app需要再settings.py中注册
1 | python manage.py makemigrations |
操作表
- 相当于insert语句,需要from app01.models import UserInfo(引入对应的类/表)
1 | # 增加数据 |
跨域
- 安装依赖包
pip install django-cors-headers
- 在settings.py文件中更改相应的配置
1 | # settings.py |
- 加载前端打包的项目
- settings.py(根目录下)
1 | TEMPLATES = [ |
- urls.py(根目录下)
1 | from django.views.generic.base import TemplateView |
附录
- 通过python manage.py inspectdb > models.py生成的文件替换app中的models.py,执行命令
python manage.py makemigrations
出现报错:ValueError: source code string cannot contain null bytes- 解决:
- 生成的py文件默认是utf-16编码的,将编码方式换成utf-8,重新迁移即可
python manage.py makemigrations
python manage.py migrate