django 框架搭建 重定向
阿新 • • 發佈:2019-02-18
模型:承載資料的物件並提供了對資料的curd(增刪改查)
模性類必須繼承models.Model類或子段:
class BlogUser(models.Model)
欄位:
username = models.CharField(max_length=30)
pwd = models.CharField(max_length=32)
在MySQL資料庫裡建立一個數據庫為(資料庫名:pyblog_db 字符集為:utf_8)
pyblogsys
settings.py (設定)
更改django的資料庫連結引擎
DATABASES (django driver mysqlclient 1.3.7+) django要安裝一個驅動程式(driver)mysqlclient 1.3.7+
安裝驅動程式在DOS命令下輸入 pip linstall mysqlclient
DATABASES = { (資料庫)
'default';{ (預設)
‘ENGINE':'django.db.backends.mysql', (引擎)
'NAME':'pyblog_db', (名字)
'USER':'root', (使用者)
'PASSWORD':'mysql的密碼', (密碼)
'HOST':'locahost', (機主)
'PORT':'3306', (埠)
在settings.py的 INSTALL_APP中新增逆自己定義的app
執行manage.py的shell命令 ctrl+alt+r
輸入:makemigrations bloguser [appname] 生成建立資料庫的指令碼
它會在bloguser的app下建立一個 migrations\0001_initial.py
輸入:sqlmigrate bloguser 0001[migrationname] 列印SQL語句
為了顯示建立MySQL,pyblog_db資料庫裡表的語句
輸入migrate bloguser 0001 執行建立資料庫表的指令碼
在bloguser資料庫中按照以上0001_initial.py中的語句新增表
tempates (模板)
建立bloguser目錄
在bloguser目錄下建立add.html和show.html兩個檔案
add.html中的內容:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="register" method="post">
{% csrf_token %} # 指紋驗證 必須有
使用者名稱:<input type="text" name="username"><br />
密碼:<input type=password" name="pwd"><br/>
<input type="submit" value="註冊">
</form>
</body>
</html>
show.html中的內容
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
恭喜逆註冊成功!
{{ blogUser.username }}---{{ blogUser.pwd }}
</body>
</html>
檢視settings.py檔案下的TEMPLATES中是否有,
'DIRS':[os.path.join(BASE_DIR,'templates')]這句程式碼。
它的作用是把bloguser目錄下的檔案關聯在一起
在bloguser下
views.py
from django.shortcuts import render (匯入一個渲染器模組)
from .models import *
#Create your views here. (建立你的觀點)
def register(request):
# GET 要來註冊 add.html
if request.method == 'GET':
return render(request,'bloguser/add.html',{})
# POST 註冊 show.html
else:
blogUser = BlogUser()
blogUser.username = request.POST.get('username')
blogUser.pwd = request.POST.get('pwd')
blogUser.save()
return render(request,'bloguser/show.html',{'blogUser':blogUser})
重定向的設定要改變POST的返回值,
return redirect(reverse('user:show',args=[blogUser.id]))
在bloguser檔案下建立urls.py檔案,用它和pyblogsys檔案下的urls.py關聯
在pyblogsys下的urls.py中的內容:
from django.contrib import admin
from django.urls import path,include
urlpatterns = [
path('admin/', admin.site.urls),
path('user/',include('bloguser.urls',namespace='user')),
]
在bloguser下的urls.py中的內容:
from django.urls import path
from .views import *
app_name='user' #和重定向有關
urlpatterns = [
path('register',register),
path('show/<int:id>',show,name='show'),#重定向的設定 連線views.py裡的show函式
]
轉發和重定向:
轉發:一次請求和響應,請求的地址沒有變化,如果此時重新整理頁面就會重做現象
重定向:一次以上的請求和響應,請求地址發生一次以上的變化,如果此時重新整理頁面不會發生重做現象
重定向:要在views.py裡匯入redirect(重定向模組) 再匯入reverse模組(解決跳轉路徑)
重定向的意思是重新匯入另一個地址,在views.py檔案裡新定義一個個行為
def show(request,id): (它與bloguser裡的urls.py連線)
blogUser = BlogUser.objects.get(pk=id)
return render(request,'bloguser/show.html',{'blogUser':blogUser})