目录
Django采用的是mvt模型,M代表模型,V代表视图,T代表模板
- M 代表模型(Model): 负责业务对象和数据库的关系映射(ORM)。
- T 代表模板 (Template):负责如何把页面展示给用户(html)。
- V 代表视图(View): 负责业务逻辑,并在适当时候调用Model和Template。
- URL分发器,将URL的页面请求分发给不同的View处理,View再调用相应的Model和Template
模型结构图如下

- # 创建django项目
- django-admin.py startproject 工程名
- # 创建项目子应用
- python manage.py startapp 应用名
- # 启动项目
- python manage.py runserver [0.0.0.0:8000]
- # 默认所有修改过的model层转为迁移文件
- python manage.py makemigrations
- # 默认将所有的迁移文件都执行,更新生成数据库
- python manage.py migrate
- # 反向同步mysql的表结构信息
- python manage.py inspectdb > models.py
- # 创建django用户
- python manage.py createsuperuser
- INSTALLED_APPS = [
- 'django.contrib.admin',
- 'django.contrib.auth',
- 'django.contrib.contenttypes',
- 'django.contrib.sessions',
- 'django.contrib.messages',
- 'django.contrib.staticfiles',
- '应用名', #settings.py配置文件上添加应用
- ]
- ├── walden
- ├── apps
- ├── users # 应用名
- └──urls.py # 子路由
- ├── walden
- ├── settings.py #django全局配置文件
- ├── __init__.py
- ├── asgi.py
- ├── wsgi.py
- └── views.py # 路由的请求和处理
- └── urls.py # 主路由

- TEMPLATES = [
- {
- 'BACKEND': 'django.template.backends.django.DjangoTemplates',
- 'DIRS': [os.path.join(BASE_DIR, 'templates')], # settings.py配置文件上添加目录
- 'APP_DIRS': True,
- 'OPTIONS': {
- 'context_processors': [
- 'django.template.context_processors.debug',
- 'django.template.context_processors.request',
- 'django.contrib.auth.context_processors.auth',
- 'django.contrib.messages.context_processors.messages',
- ],
- },
- },
- ]
例如:curl http://127.0.0.1:8000?name=123
views.py路由的处理
- def helloworld(request):
- name = request.GET.get('name') # 获取单个query(?name=123)
- #name = request.GET.getlist('name') # 获取多个query(?name=123&name=234)
4.2.1 template from.html配置
- <form action="/froms" method="post">
- {% csrf_token %} # 用户提交表单时防止跨站攻击所做的保护
- <p>姓名:<input type="text" name="name1">p>
- <input type="submit" value="确定">
- form>
- <p>{{head}}<p>
4.2.2 views.py路由的配置
- from django.shortcuts import render
- from django.views.decorators.csrf import csrf_protect
- from .forms import nameForm
- from django import forms
-
- class nameForm(forms.Form):
- name1=forms.CharField()
-
- @csrf_protect # 用户提交表单时防止跨站攻击所做的保护
- def fromIndex(request):
- if request.method == 'POST': #是否为post请求
- form=nameForm(request.POST) # post请求参数的获取
- if form.is_valid(): #检查输入是否规范
- ans={}
- name=form.cleaned_data['name1']
- ans['head']=name
- return render(request,'from.html',ans)
- else:
- return render(request,'from.html')
- # 在settings.py配置文件中
- DATABASES = {
- 'default': {
- 'ENGINE': 'django.db.backends.mysql', # 指明连接数据库的引擎
- 'NAME': 'db2', # 库名, django 连接的 mysql 数据库库名
- 'HOST': '192.168.101.10', # 数据库的ip地址,
- 'PORT': 3306, # 数据库的端口号
- 'USER': 'root', # 用户名
- 'PASSWORD': '******' # 密码
- }
- }
- # 通过命令同步数据库表结构信息到代码
- python manage.py inspectdb > models.py
https://blog.csdn.net/m0_65883616/article/details/125736469
相关链接:
django项目: https://gitee.com/AngDH/hello_django.git
django admin配置:http://t.zoukankan.com/Lovebugs-p-7170814.html
django请求处理:https://zhuanlan.zhihu.com/p/25001794
django数据库操作:https://blog.csdn.net/m0_65883616/article/details/125736469
flask学习:https://blog.csdn.net/shifengboy/article/details/114274271
flask数据库操作:https://blog.csdn.net/bambkk/article/details/124586205