經過上一篇 python 入門實戰 - 學生管理系統 練習了一把 python 語法。本篇總結下 Django 這個 web 框架的入門使用。前提是要有相關的 web 開發經驗(Java, php等)。由於本文不會涉及 http 協議,先後端分離不分離等概念。php
另附:css
安裝 django (非 maOS 操做系統 請參考開篇的教程選擇安裝方式,以及驗證是否安裝成功)html
python3 -m pip install django==1.11.6
建立項目python
django-admin startproject helloworld(這個是項目名)
圖中標記了 4 個地方 1. 建立完 helloworld 項目後,會發現helloworld 下面還有一個 helloworld, 後面說到的 helloworld 通常都是第一層級,簡稱項目根目錄 2. settings.py 主要是一些配置,好比數據庫,靜態文件存放位置等 3. urls.py 主要配置 url 和 函數的映射關係 4. manage.py 提供用來管理項目的命令,好比啓動項目,後面請多留意
進入項目根目錄mysql
cd helloworld
啓動項目,並訪問web
(這裏會啓動失敗,緣由是 python3 和 django 的兼容問題,反正我用的 django 版本存在這個問題,解決方式就是刪除某個文件的一個 逗號,若是碰見了,百度一搜就明白了,具體內容當初忘記保存了)sql
python3 manage.py runserver // 固然也能夠指定ip:host python3 manage.py runserver localhost:8080
至此咱們就能夠自行開發 web 應用了,可是你也許還會問數據庫
下面就新建的 helloword 項目進行講解django
問題 1. 函數及其映射關係後端
找到 helloworld/helloworld/ 下面有個 urls.py 文件
默認配置:
from django.conf.urls import url from django.contrib import admin urlpatterns = [ url(r'^admin/', admin.site.urls), ]
修改後:
from django.conf.urls import url from django.contrib import admin # 下面是新增的 from django.shortcuts import HttpResponse, render, redirect # 1. 跳轉頁面 # render 表示 訪問 http://localhost:8000/index 會跳轉到 index.html 頁面 def index(request): return render(request, 'index.html') # 2. 跳轉頁面,並攜帶參數 def index02(request): return render(request, 'index.html', {'參數名', 值}) # 3. 重定向 def index03(request): return redirect('/index/') # 4. 接收參數 def index04(request): # 接收 post 請求參數 request.POST.get('參數名') # 接收 get 請求參數 request.GET.get('參數名') return render(request, 'index.html') # 配置 url 映射 urlpatterns = [ url(r'^admin/', admin.site.urls), # 配置 url 映射 # 訪問 http://localhost:8000/index/ 就會調用上面的 index 函數 url(r'^index/', index), # TODO 省略 index02, index03, index 04 映射配置 ]
- 靜態文件存放位置
找到 helloworld/helloworld/ 下面有個 settings.py 文件
html 文件配置: 大概 50 多行的位置
TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', # 修改這個配置項以下 # 而後在項目根目錄下,新建 templates 目錄,用於存放 html 文件 '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', ], }, }, ]
css,js ,image 文件配置: 在 settings.py 文件末尾
STATIC_URL = '/static/' # 在 項目根目錄 helloworld 下面 # 固然還有別名的用法,剛開始學,多說無益
如何在 html 中引用 css,js
<!DOCTYPE html> <html lang="en"> <head> <script src='/static/test.js'></script> <title>Document</title> </head> <body> </body> </html>
上面有些寫法多爲練習使用,所以不太規範。好比咱們在 helloword/helloword/urls.py 寫了一大堆函數,很是不雅觀。因此如今引入一個新的東西。
在項目根目錄下,執行
python3 manage.py startapp app(模塊名) # 這是咱們第二次使用 manage.py 這個文件, # 第一次是啓動項目,如今應該能夠理解 這個文件是幹嗎用的 # 執行結束,咱們會發現項目根目錄下多了一個 app 目錄
讓 django 知道你新增的 app 模塊
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', # 新增 'app.apps.AppConfig' # 也能夠直接寫 'app' # app 就是新增的目錄名 後面的 固定, # 你也能夠打開 app/apps.py 文件,看看 ]
app 目錄下 有個 views.py 文件,咱們能夠把函數定義在這裏。
from django.shortcuts import HttpResponse, render, redirect def index(request): return render(request, 'index.html')
而後回到 helloword/helloword/urls.py 文件中,修改後以下:
# 1. 導入函數 from app.views import index # 2. 配置 urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^index/', index), ]
如何配置 mysql 數據庫
一樣找到 helloworld/helloworld/ 下面有個 settings.py 文件,大概 70-80行左右
修改後以下:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'student_sys', # 庫 'USER': 'root', 'PASSWORD': '123456', 'HOST': 'localhost', 'PORT': 3306 } }
而後找到 helloworld/app/init.py 文件
文件默認是空的, 添加以下配置
import pymysql # 告訴 django 用 pymysql 代替 mysqldb pymysql.install_as_MySQLdb()
引入 orm
進入 helloworld/app/ 目錄找到 models.py 文件,修改以下:
from django.db import models # 定義一個 Student 類 class Student(models.Model): id = models.AutoField(primary_key=True) # 主鍵 name = models.CharField(max_length=20) # 字符類型 sex = models.CharField(max_length=2) birthday = models.CharField(max_length=10) def __str__(self): return self.name + "\t" + self.sex + "\t" + self.birthday
在項目根目錄 helloworld 下依次執行
python3 manage.py makemigrations python3 manage.py migrate
會自動幫咱們生成表
也許你還會困惑:
~~~~~ 請自行探索
自我吐槽: 其實這樣的教程很雞肋,擔憂篇幅過長看的人眼花繚亂。
寫完以後,感受本文的定位更多的是自我總結,可能大家看到這文章會吐槽,噴我~~~