1 安装django
pip install django
#在 python安装目录\Python38\Scripts下,生成django-admin.exe工具,用于创建django项目中文件和文件夹
#django和flask有些不同,django中项目会有一些默认文件和文件夹
2 创建项目(命令)
> cd D:\Personal\StockSystem
> django-admin.exe startproject 项目名称。
例如,django-admin.exe startproject server
3 创建项目(Pycharm)
特殊说明,两种创建方式的对比:
- 命令创建,是标准的
- pycharm创建,是在标准的基础上默认给咱加了点东西
添加了一个templates目录(如果用不到,可以删除)
在setting.py-TEMPLATES中添加了 'DIRS': [os.path.join(BASE_DIR, 'templates')]
4. 目录结构
server
│ manage.py # 项目的入口,项目的管理,启动项目,创建app,数据管理等,默认不用修改
├─config # 将项目文件夹名修改为config
│ │ __init__.py
│ │ settings.py # 【项目配置】如,INSTALLED_APPS,DATABASES...
│ │ urls.py # 【URL->函数的对应关系】经常操作的文件。另,Flask是和函数放一起的@app.route("/add/user", methods=["GET"])
│ │ asgi.py # 【接受网络请求(异步,django3支持的异步,但是不太成熟,所以大部分还是用wsgi)】 默认不用修改
│ │ wsgi.py # 【接受网络请求(同步)】 默认不用修改
├─templates # 这个空文件夹是pycharm创建时生成,如果是用命令创建项目的就没有这个文件夹,所以可以删除
└─user # AppOne
│ │ admin.py # 【固定,不用动】django默认提供了admin后台管理,一般不会使用到,一般测试入数据时会用一下
│ │ apps.py # 【固定,不用动】app启动类
│ │ models.py # 【**重要**】对数据库操作
│ │ tests.py # 【固定,不用动】这个用于做单元测试的,我们只做业务功能
│ │ views.py # 【**重要**】函数
│ │ __init__.py
│ └─migrations # 【固定,不用动】用于数据库变更记录
│ __init__.py
│ ─AppTwo # 目录结构和AppOne一样
└ ─AppThree # 目录结构和AppOne一样
#在config/setting.py的TEMPLATES中 'DIRS': [os.path.join(BASE_DIR, 'templates')]是pycharm创建时生成,
如果是用命令创建项目的就没有这个templates,所以可以删除,如, 'DIRS': []
5. 创建app
新建Django新项目时,可以通过pycharm创建一个app,也可以通过下面命令创建app
>python manage.py startapp AppTwo
6. 注册app
创建app之后,要注册app
# 在setting.py的INSTALLED_APPS中添加user
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'user.apps.UserConfig',
'AppTwo.apps.ApptwoConfig', # 注册AppTwo
]
7. 一个简单的接口
7.1 在user/views.py添加函数
from django.http import HttpResponse
def searchUser(request):
name = request.GET.get('name')
return HttpResponse("user" + name) # 字符串作为返回内容
7.2 配置URL->函数 对应关系
# 在urls.py添加以下内容
from user import views
urlpatterns = [
path('admin/', admin.site.urls),
path('user/search/', views.searchUser), # URL->函数
]
8. 配置跨域
首先安装django-cors-headers模块
首先安装django-cors-headers模块
在config/setting.py中修改
ALLOWED_HOSTS = ['skyemperor.top', 'localhost', '127.0.0.1']
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'user.apps.UserConfig',
]
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
CORS_ALLOW_CREDENTIALS = True
CORS_ORIGIN_ALLOW_ALL = True
CORS_ORIGIN_WHITELIST = ('http://*.*.*.*:*', 'http://skyemperor.top:*', 'http://localhost', 'http://127.0.0.1')
CORS_ALLOW_METHODS = (
'DELETE',
'GET',
'OPTIONS',
'PATCH',
'POST',
'PUT',
'VIEW',
)
CORS_ALLOW_HEADERS = ('*',)
9. 启动Django服务
# 在本地生成依赖库版本文件
pip freeze > requirements.txt
# 安装模块
pip install -r requirements.txt
# 启动Django项目
python manage.py runserver 127.0.0.1:5000
10. 测试接口
启动项目,访问http://127.0.0.1:5000/user/search?name=cjh,会得到结果user=cjh
11.使用sqlite3
Django有一个默认的后台,可以看到工程下的urls.py文件生成时就具有一条路由
urlpatterns = [
path('admin/', admin.site.urls),
]
首先,现在我们打开user/models.py文件,在文件里进行添加类(也就是添加表)
from django.db import models
# Create your models here.
class UserInfo(models.Model):
username = models.CharField(max_length=32)
password = models.CharField(max_length=32)
age = models.IntegerField()
接着,在终端中输入命令
>python manage.py makemigrations # 将models.py中的改动保存到migrations的文件夹中,但还未同步到数据库
>python manage.py migrate # 同步到数据库
使用命令:python manage.py createsuperuser 创建Web后台的用户名和密码。
D:\project\Stock-Analysis-System\server-django>python manage.py createsuperuser
Username (leave blank to use 'cenjh'): root
Email address:
Password:
Password (again):
The password is too similar to the username.
This password is too short. It must contain at least 8 characters.
This password is too common.
Bypass password validation and create user anyway? [y/N]: y
Superuser created successfully.
访问Django的后台:http://127.0.0.1/admin/