1. 程式人生 > >Django框架(二)—— 基本配置:app註冊、模板配置、靜態檔案配置、資料庫連線配置post和get

Django框架(二)—— 基本配置:app註冊、模板配置、靜態檔案配置、資料庫連線配置post和get

app註冊、模板配置、靜態檔案配置、資料庫連線配置post和get

一、app

在Django中,APP可以用以下類比

大學 --------------------專案
    計算機學院------------app01
    土木學院 ------------ app02

1、app建立

方式一:在terminate命令列建立: python manage.py startapp app01(app名字)
        亦可:pycharm選單欄中 Tools --> run manage.py task ,然後在terminate輸入命令 startapp app01(app名字)
方式二:在建立專案的時候,直接建立app

2、app註冊

  • 方式一建立app
# 在配置檔案的 settings.py 中的 INSTALLED_APPS 中,新增
'app01'   # app名字
或者
'app01.apps.App01Config'
  • 方式二建立app
# pycharm會自動註冊app,即 INSTALLED_APPS 中
'app01.apps.App01Config'

在註冊過一次以後,不能再次註冊

二、模板配置

1、建立模板檔案

在Django中建立一個templates 資料夾,用於存放前臺的html檔案

2、模板註冊

# 在配置檔案的settings.py中的 TEMPLATES 中配置路徑
'DIRS': [os.path.join(BASE_DIR, 'templates')]

三、靜態檔案配置

STATIC_URL = '/static/'  # 改語句一般不更改
# static資料夾剛開始是沒有的,你必須自己在根路徑下建立,建立好了在 STATIC_URL='/static/' 這行程式碼下寫
STATICFILES_DIRS = [
    os.path.join(BASE_DIR,'static'),
]
# 變數名必須是 STATICFILES_DIRS,必須大寫,列表裡面可以多個路徑,看你自己的需求,配置好這個後,你就可以在你的html頁面中
匯入相關的靜態檔案了,比如匯入一個css檔案,我寫個虛擬碼
<link rel="stylesheet" href="/static/mycss.css">
注意注意了:上面程式碼中的static不是我們自己建立的static資料夾,它對應的是 settings.py 中的STATIC_URL = '/static/'這句程式碼,假如這句程式碼中'/static/'變成'/abc/'的話,那麼html檔案中匯入css的那句程式碼中的"/static/mycss.css"也應變成"/abc/mycss.css",他們兩個是相對應的。

四、資料庫連線配置

1、連線sqlite資料庫

pycharm預設連線資料庫,預設已配置好,無需再配置

2、連線mysql資料庫

# 1.在配置檔案的settings.py中的 DATABASES 中配置路徑
'default': {
                'ENGINE': 'django.db.backends.mysql',
                'HOST': '127.0.0.1',
                'PORT': 3306,
                'USER': 'root',
                'PASSWORD': 'admin',
                'NAME': 'lqz',
            }
    
# 2.在__init__.py檔案中配置
import pymysql
pymysql.install_as_MySQLdb()

五、get請求和post請求

get:獲取資料,頁面,攜帶資料是不重要的資料(資料量有大小限制),資料會顯示出來,如果是使用者名稱密碼,這種方式     就不安全
post:往後臺提交資料

六、新手三件套

1 render--返回頁面
    預設會去templates裡找,注意路徑
2 redirect--重定向
3 HttpResponse
# 本質:都是返回HttpResponse的物件

七、登入功能案例

# 1. login.html  
***重點***1. action:提交到後臺的地址三種寫法:
              1. http://127.0.0.1:8000/login
              2. /login/   推薦用
              3. 空
         2. method  post方式
         3. <input type="submit" value="提交">或<button></button>
                type不可以是button
                
<form action="http://127.0.0.1:8000/login" method="post">
<p>使用者名稱:<input type="text" name="name" class="form-control"></p>
<p >
    密碼:<input type="password" name="pwd" class="form-control">
</p>
<input type="submit" value="提交">
</form>

# 2.檢視層:
        1 request.method  ----前臺提交過來請求的方式
        2 request.POST(相當於字典)----post形式提交過來的資料,(http請求報文的請求體中)
        3 request.POST.get('name') ----推薦用get取值(取出列表最後一個值)
        4 request.POST.getlist('name')-----取出列表所有的值_
        5 前臺get方式提交的資料,從request.GET字典裡取

# 3.連結資料庫(防止注入,推薦以下寫法)
cur.execute('select * from user where name=%s and password=%s ',[name,pwd])