- 教程
- 安装
首先需要虚拟环境
随便选一个目录 : 执行
python -m virtualenv .
注意最后有个点
然后进入 Scripts 激活这个虚拟目录 :
activate
激活后如果看到目录前出现 (selected folder name ) 就算成功 (注意, 每次重启电脑后都要 activate )
最后安装 django
pip install django
安装成功后查看版本
python -m django --version
版本是 2.2.2
- Hello world
https://djangoforbeginners.com/hello-world/
安装完成 django之后 ,新建一个 app
django-admin startproject django_project
进入 app 执行
python manage.py migrate
此命令将会生成 sqllite 数据库
创建超级用户
python manage.py createsuperuser
lthxk ; Piercing77 ; mzcw2011@sina.cn
启动server
python manage.py runserver
将默认结构导入 sqllite数据库 , 将models.py 的结构自动在数据库生成
python manage.py migrate
新建一个app , 可以有多个app
python manage.py startapp blog
html templete store https://themeforest.net
- 怎么建一个简单的app
Building and deploying an Enterprise Django Web App in 16 hours
https://medium.com/python-pandemonium/building-and-deploying-an-enterprise-django-web-app-in-16-hours-79e018f7b94c
数据库部分
- 能不能直接用已有的数据库连接器比如 pymysql
不能, 必须在django的虚拟目录重新
pip install mysqlclient
- 怎么连接 数据库
for 连接 : 修改 settings.py ,
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'shfuture', 'USER': 'root', 'PASSWORD': 'MYSQLTB', 'HOST': '127.0.0.1', 'PORT': '3306', } }
- 把表自动生成 类
python manage.py inspectdb > models.py
这样所有的表都会被定义在 models 里面
用新生成的 models.py 替换 pages 目录原有的即可
- 怎么显示表或者查询结果
a) 视图直接显示
先 import models
from pages.models import If190620190417
因为 models.py 在 pages 目录下
然后在视图写:
from django.shortcuts import render from django.http import JsonResponse # Create your views here. from django.http import HttpResponse from pages.models import If190620190527 from django.core import serializers def homePageView(request): #return HttpResponse('Hello, World!') query_results = If190620190527.objects.all() #return JsonResponse(query_results) json_data = serializers.serialize('json', query_results) #return HttpResponse(json_data, mimetype='application/json') return HttpResponse(json_data)
参考 : https://stackoverflow.com/questions/7287027/displaying-a-table-in-django-from-database
如果要显示的好看一点 , 用 django-tables2 , 带分页和排序
django-tables2 安装 :
pip install django-tables2
安装成功显示
Successfully installed django-tables2-2.0.6
在 settings.py 加上 “django_tables2”,
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'pages.apps.PagesConfig', "django_tables2", ]
- 如果已经用这个命令 python manage.py inspectdb > models.py 生成了 py 文件
但是之后又修改了表结构 ,怎么重新更新 models.py ?
- 怎么显示 matlibplot
- 增删改 (CRUD)
https://rayed.com/posts/2018/05/django-crud-create-retrieve-update-delete/
- how to debug , include step by step
https://www.bedjango.com/blog/how-debug-django-useful-tips/
- How to call rest api
https://stackoverflow.com/questions/30259452/proper-way-to-consume-data-from-restful-api-in-django
如何把 admin 和 rest api 合起来, 就是说 ,admin register 的 model 是从 rest api 得来 , 而不是内部数据库
https://stackoverflow.com/questions/9013099/django-admin-using-restful-api-v-s-database
这个问题最接近 , 但是似乎没答案
- django 要求表必须有 primary key
https://stackoverflow.com/questions/605896/django-querying-read-only-view-with-no-primary-key
- 重要的概念 :
a) 什么是 migration
Migrations are Django’s way of propagating changes you make to your models (adding a field, deleting a model, etc.) into your database schema
注意是从 models ——> database
如果database 先发生改变, 怎么更新 models ?
这篇文章说的很详细 : https://stackoverflow.com/questions/30547580/django-update-models-py-when-database-changes
b) ORM mean object relation mapping
当设置好 settings.py 的数据库连接后, 一旦 django create a model , mysql 那边会自动 建立相应的表
支持
- PostgreSQL
- MySQL
- SQLite
- Oracle
教程 : https://djangobook.com/mdj2-models/
- Django 支持的mysql 版本 : 大于等于 5.6
当前是 5.1 版本 , migrate 会出错
https://stackoverflow.com/questions/52730817/django-migrate-error-mysql-exceptions-programmingerror-1064-you-have-an-err
- 找一个模板
admin templete
github 的 https://github.com/guohongze/adminset
- admin
How to add models to admin.py : https://www.dev2qa.com/how-to-add-models-to-django-admin-site/