超詳細django建站過程,含資料庫操作
準備
-
安裝django
pip install django
-
建立項目
指定檔案夾下
建立項目 django --admin startproject 項目名
建立應用名:python manage.py startapp 應用名
後續基于已制作好的project示範項目名 myproj,應用名myapp
配置(setting.py)
- 注冊
- 配置資料庫(mysql)以及模闆與靜态檔案工作目錄
使用mysql資料庫需在初始化中導入pymysql相關配置項,
在__init__.py中導入
import pymysql
pymysql.install_as_MySQLdb()
靜态檔案工作目錄
用于放html等網頁靜态檔案
模型(model.py)
通過類操作資料庫,建立兩張表
執行指令:
生成遷移檔案:python manege.py makemigrations
生成遷移表:pyhon manege.py migrate
from django.db import models
# Create your models here.
class PersonInfo(models.Model):
user = models.CharField(max_length=20)
pw = models.CharField(max_length=10)
class Pic(models.Model):
img = models.CharField(max_length=10)
adress = models.CharField(max_length=25)
登入資料庫檢視
添加使用者名與密碼,用于登入驗證;
insert into myapp_personinfo values(0,'user','password');
視圖(views.py)
具體html頁面請自行百度套模闆,由于部落客的頁面做的爛,就不提供了,隻寫關于django的python代碼
login頁面
def login(request):
if request.session.has_key('islogin'):
# 使用者已登入, 跳轉到首頁面
return redirect('/index')
else:
#判斷使用者名記住狀态
if 'username' in request.COOKIES:
username = request.COOKIES['username']
else:
username = ''
跳轉驗證頁面
return render(request, "login.html", {'username':username})
驗證頁面(login_check)
def login_check(request):
#從浏覽器送出的表單擷取資料
username = request.POST.get('username')
password = request.POST.get('password')
remember = request.POST.get('remember')
print(username)
print(password)
#查詢資料庫并驗證
info = PersonInfo.objects.get(user=username)
if password == info.pw:
#驗證通過跳轉首頁
response = redirect('/index')
if remember == 'on':
response.set_cookie('username', username, max_age=180)
request.session['islogin'] = True
request.session['username'] = username
return response
否則跳轉登入頁面
return redirect('/login')
配置路由(urls.py)
-
現在項目檔案夾下(myproj)的urls.py内添加應用路由
配置
-
在應用目錄下建立urls.py
配置添加頁面路由
首頁加密處理
def login_required(view_func):
'''登入判斷裝飾器'''
def wrapper(request, *view_args, **view_kwargs):
# 判斷使用者是否登入
if request.session.has_key('islogin'):
# 使用者已登入,調用對應的視圖
return view_func(request, *view_args, **view_kwargs)
else:
# 使用者未登入,跳轉到登入頁
return redirect('/login')
return wrapper
首頁傳回函數
@login_required
def index(request):
return render(request, "index.html")
示範
具體html頁面制作非我所長,自行百度套模闆,将制作好的html檔案置于templates中即可
在指令行輸入
python manage.py runserver