django流程
- 使用pycharm创建一个python虚拟环境
- 点击file->settings->project interpreter->右上角的'+'号,搜索django,选中点击install package即可
- 上面我们创建了一个虚拟环境并将我们需要的包导入进去
- 接下来便可以创建我们的项目,在pycharm终端中执行django-admin startproject web和python manage.py startapp app来创建我们的项目和目录
- 现在配置项目,首先使用2步骤来导入pymysql库,在__init__.py添加如下代码
import pymysql pymysql.install_as_MySQLdb()
- 配置settings如下
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'app', ]
TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [ os.path.join(BASE_DIR,'templates'), ], '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', ], }, }, ]
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'web', 'USER':'root', 'HOST':'127.0.0.1', 'PASSWORD':'123456789', } }
- 在web下的urls.py中如下
from django.contrib import admin from django.urls import path,include urlpatterns = [ path('admin/', admin.site.urls), path('app/',include(('app.urls','app'),namespace='app')), ]
- 在app的目录下创建urls.py并加入下面代码
from django.urls import path from . import views urlpatterns=[ path('index/',views.index,name='index'), ]
- 在app/views.py加入代码
from django.shortcuts import render # Create your views here. from django.http import HttpResponse def index(request): return HttpResponse("hello")
- 在你的mysql数据库中创建web数据库
- 在终端中执行 python manage.py runserver 7777
- 在浏览器中输入http://127.0.0.1/app/index即可
迁移数据库
上面简单的说明了一下一个项目的创建和运行
数据库的迁移可以使用命令python manage.py makemigrations来创建迁移文件,这个命令执行后会在migrations下创建一个新的迁移文件,但是并没有生成数据表,还需要使用python manage.py migrate命令来执行迁移文件才能生成数据表
我们来编写一个user表
在app的models.py下输入下面代码
from django.db import models
# Create your models here.
class user(models.Model):
username=models.CharField(max_length=100)
password=models.CharField(max_length=100)
然后在终端中输入python manage.py makemigrations和python manage.py migrate
我们在数据库中查看一下
mysql> show tables;
+----------------------------+
| Tables_in_web |
+----------------------------+
| app_user |
| auth_group |
| auth_group_permissions |
| auth_permission |
| auth_user |
| auth_user_groups |
| auth_user_user_permissions |
| django_admin_log |
| django_content_type |
| django_migrations |
| django_session |
+----------------------------+
11 rows in set (0.00 sec)
可以看到这个数据库里有很多的表,app_user是我们刚才创建的表,app表示应用名称,user表示类名
可以看到还有许多其他的表这是因为在settings里注册了很多的app 如下
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app',
]
只有在这个列表里注册的应用才会生成迁移文件并且生成表,这就是为什么要将app添加进去
django架构
django使用的是MTV架构
浏览器请求的流程是,拿我们这个例子。
url为:http://127.0.0.1:7777/app/index/
首先会将请求的url去掉协议和主机名变为app/index/会到达web/urls.py,和urlpatterns里的元素进行匹配,会匹配到
path('app/',include(('app.urls','app'),namespace='app')),减去匹配到的字符串变为index/,会进入app/urls.py继续匹配,匹配到path('index/',views.index,name='index'),然后进入到views.py,执行index函数,这个函数返回一个HttpResponse对象给浏览器。
上面便是大体的流程。