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對象給瀏覽器。
上面便是大體的流程。