Django模板 创建虚拟环境和django项目 适用于vscode开发,如果使用PyCharm可跳过
以管理员身份打开cmd或powershell
1 2 3 4 5 6 7 8 9 10 11 python -m venv 虚拟环境名 .\虚拟环境名\Scripts\activate pip install django django-admin startproject 项目名 cd 项目名 python manage.py startapp 应用名
vscode配置python解释器
快捷键ctrl+shift+p打开命令框
输入python interpreter,点击select interpreter
点击enter interpreter path(添加一次过后解释器就会显示在下方)
点击find
选择 虚拟环境\Scripts\python.exe 并确定
快捷键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 ALLOWED_HOSTS = ['*' ] INSTALLED_APPS = [ 'corsheaders' , 'app' ] MIDDLEWARE = [ 'django.contrib.sessions.middleware.SessionMiddleware' , 'corsheaders.middleware.CorsMiddleware' , 'django.middleware.common.CommonMiddleware' , ] TEMPLATES = [ { 'DIRS' : [BASE_DIR / 'templates' ], }, ] DATABASES = { 'default' : { 'ENGINE' : 'django.db.backends.mysql' , 'NAME' : 'demo' , 'USER' : 'root' , 'PASSWORD' : '123456' , 'HOST' : '127.0.0.1' , 'PORT' : 3306 , } } LANGUAGE_CODE = 'zh-Hans' TIME_ZONE = 'Asia/Shanghai' USE_I18N = True USE_TZ = False STATIC_URL = 'static/' STATICFILES_DIRS=[os.path.join(BASE_DIR,'static' )] CORS_ORIGIN_ALLOW_ALL = True CORS_ALLOW_CREDENTIALS = True
urls.py
1 2 3 4 5 6 7 from django.contrib import adminfrom 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 modelsfrom django.utils import timezoneclass 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 pathfrom . 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, JsonResponsefrom django.views import Viewfrom django.views.decorators.csrf import csrf_exempt from django.utils import timezoneimport jsonfrom datetime import datetimefrom .models import *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)def get_a (request ): a = ModelExampleA.objects.all ().values() a = list (a[:]) data = json.dumps(a) return HttpResponse(data, content_type="application/json" )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 makemigrationspython manage.py migratepython manage.py runserverpython manage.py runserver 127.0 .0.1 :8000
可以访问/admin和/app