Django模板

Django模板

创建虚拟环境和django项目

适用于vscode开发,如果使用PyCharm可跳过

以管理员身份打开cmd或powershell

1
2
3
4
5
6
7
8
9
10
11
# 创建虚拟环境,需要系统有python
python -m venv 虚拟环境名
# 进入虚拟环境
.\虚拟环境名\Scripts\activate
# 安装django
pip install django
# 创建django项目
django-admin startproject 项目名
# 创建应用
cd 项目名
python manage.py startapp 应用名

vscode配置python解释器

  1. 快捷键ctrl+shift+p打开命令框

  2. 输入python interpreter,点击select interpreter

  3. 点击enter interpreter path(添加一次过后解释器就会显示在下方)

  4. 点击find

  5. 选择 虚拟环境\Scripts\python.exe 并确定

  6. 快捷键ctrl+shift+`打开新终端,可以看见已经进入虚拟环境

vscode安装虚拟插件

扩展搜索django安装第一个(最多下载)

整体框架搭建

以创建的项目名为project,应用名为app为例,项目的结构为(没有的文件夹自行创建)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
project
--app
----__pycache__
----migrations
----__init__.py
----admin.py
----apps.py
----models.py
----tests.py
----urls.py
----views.py
--project
----__pycache__
----__init__.py
----asgi.py
----settings.py
----urls.py
----wsgi.py
--static
--templates
--db.sqlite3
--favicon.ico
--manage.py

项目安装的依赖有(需额外下载的有django-cors-heade、mysqlclient、PyMySQL)

1
2
3
4
5
6
7
asgiref==3.6.0
Django==4.1.7
django-cors-headers==3.14.0
mysqlclient==2.1.1
PyMySQL==1.0.2
sqlparse==0.4.3
tzdata==2022.7

project

settings.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# 允许访问的host,*为任意
ALLOWED_HOSTS = ['*']

# Application definition
# corsheaders用于解决跨域问题,app为本项目的应用
INSTALLED_APPS = [
# ...
# 最后加上两行
'corsheaders',
'app'
]
MIDDLEWARE = [
# ...
'django.contrib.sessions.middleware.SessionMiddleware',
'corsheaders.middleware.CorsMiddleware', # 中间加上这一行
'django.middleware.common.CommonMiddleware',
# ...
]
TEMPLATES = [
{
# ...
'DIRS': [BASE_DIR / 'templates'], # 配置templates文件夹的路径
# ...
},
]


# Database
# 数据库配置,以mysql为例,系统需安装MySQL并创建对应的数据库
DATABASES = {
# 'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': BASE_DIR / 'db.sqlite3',
# }
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'demo',
'USER': 'root',
'PASSWORD': '123456',
'HOST': '127.0.0.1',
'PORT': 3306,
}
}


# Internationalization
# 对于国际化的设置,供参考
LANGUAGE_CODE = 'zh-Hans'
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_TZ = False

# Static files (CSS, JavaScript, Images)
# 静态文件位置
STATIC_URL = 'static/'
STATICFILES_DIRS=[os.path.join(BASE_DIR,'static')]

# 跨域问题corsheaders的配置,供参考
CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_CREDENTIALS = True

urls.py

1
2
3
4
5
6
7
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
path('admin/', admin.site.urls),
path('app/', include('app.urls'))
]

app

models.py定义数据库的表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
from django.db import models
from django.utils import timezone


class User(models.Model):
user_id = models.AutoField(primary_key=True)
user_name = models.CharField(max_length=30, default='', unique=True)
user_password = models.CharField(max_length=32)
created_time = models.DateTimeField('创建时间', auto_now_add=True)
updated_time = models.DateTimeField('更新时间', auto_now=True)


class ModelExampleA(models.Model):
a_id = models.AutoField(primary_key=True)
a_name = models.CharField(max_length=30, default='')
number = models.IntegerField(default=0)
time = models.DateTimeField(default = timezone.now)


class ModelExampleB(models.Model):
b_id = models.AutoField(primary_key=True)
user_id = models.ForeignKey(to=User, db_column='user_id', on_delete=models.CASCADE)
a_id = models.ForeignKey(to=ModelExampleA, db_column='a_id', on_delete=models.CASCADE)
number = models.IntegerField(default=-1)
time = models.DateTimeField(default = timezone.now)

urls.py定义api

1
2
3
4
5
6
7
from django.urls import path
from . import views

urlpatterns = [
path('create_user/', views.create_user),
path('login/', views.login),
]

views.py定义视图

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
from django.http import HttpResponse, JsonResponse
from django.views import View
from django.views.decorators.csrf import csrf_exempt # 用于处理POST请求
from django.utils import timezone
import json
from datetime import datetime
from .models import *

# json编码
class MyEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, datetime):
return obj.strftime("%Y-%m-%d %H:%M:%S")
else:
return json.JSONEncoder.default(self, obj)

# GET
def get_a(request):
a = ModelExampleA.objects.all().values()
a = list(a[:])
data = json.dumps(a)
return HttpResponse(data, content_type="application/json")


# POST
def get_a(request):
body = json.loads(request.body)
a_id = body['a_id']
a = ModelExampleA.objects.filter(a_id=a_id).values()
a = list(a[:])
data = json.dumps(a)
return HttpResponse(data, content_type="application/json")

运行

在终端中

1
2
3
4
python manage.py makemigrations
python manage.py migrate
python manage.py runserver
python manage.py runserver 127.0.0.1:8000

可以访问/admin和/app


Django模板
https://wangaaayu.github.io/blog/posts/a86d5b82/
作者
WangAaayu
发布于
2023年5月29日
更新于
2023年6月6日
许可协议