1. 程式人生 > 其它 >Django小白必會三板斧與基本配置

Django小白必會三板斧與基本配置

Django三板斧

① HttpResponse

  可以給頁面返回一個字串型別資料


from django.shortcuts import render, HttpResponse, redirect

def
register(request): return HttpResponse('註冊成功')

② render

  返回一個HTML頁面


from django.shortcuts import render, HttpResponse, redirect

def
login(request): return render(request, 'login.html
') def login(request): return render(request, 'login.html',local()) # 第三個引數是將該區域性名稱空間的名字都傳給HTML頁面使用 def login(request): a = 1 b = 2 return render(request, 'login.html',{'a':a,'b':b}) # 將字典內的K鍵傳遞給HTML頁面使用

③ redirect

  該方法是重定向,可以指定一個網址也可以是本地的

from django.shortcuts import render, HttpResponse, redirect
# 重定向到一個網址 def register(request): return redirect('www.baidu.com') # 重定向到本地的頁面 def register(request): return redirect('/login/')

靜態檔案配置

  靜態檔案就是一些寫死了的檔案,例如js檔案,css檔案,圖片等

  pycahrm建立靜態檔案時不會給我們建立一個存放靜態檔案的資料夾,所以我們一般都需要在專案中建立一個static資料夾,將需要的靜態檔案都放在這個資料夾下

  修改配置檔案

STATIC_URL = '/static/' #  這是一個令牌,讀取靜態檔案時需要使用
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')] # 靜態檔案字典,有幾個靜態資料夾都可以寫在這裡,需要自己手動新增

  修改HTML匯入

# 方式一 
# /static/ 是令牌,如果令牌修改了這裡的static也要修改
<link rel="stylesheet" href=" /static/bootstrap-3.4.1-dist/css/bootstrap.css'">
<script src= '/static/bootstrap-3.4.1-dist/js/bootstrap.js' ></script>

# 方式二 
#該方法不需要管令牌是什麼,是動態獲取的
{% load static %}
<link rel="stylesheet" href="{% static 'bootstrap-3.4.1-dist/css/bootstrap.css' %}">
<script src={% static 'bootstrap-3.4.1-dist/js/bootstrap.js' %}></script>

form表單

<form action="">
'''
    1. 什麼都不寫,提交到當前頁面
    2. 全寫:https://passport.baidu.com/v2/api/?login
    3. 只寫字尾
        /login/  => 自動補全ip和埠
        http://127.0.0.1:8000/login/
'''

request方法

"""
request.method # 獲取當前頁面的請求方法
request.POST  # POST請求的方法
request.GET   # GET請求的方法
request.FILES # 獲取檔案資料
request.body  
request.path 
request.path_info
request.get_full_path()  能過獲取完整的url及問號後面的引數 
"""
    print(request.path)  # /app01/ab_file/
    print(request.path_info)  # /app01/ab_file/
    print(request.get_full_path())  # /app01/ab_file/?username=jason

form表單上傳檔案及後端操作

"""
form表單上傳檔案型別的資料
    1.method必須指定成post
    2.enctype必須換成formdata

request.FILES
request.FILES.get('file')
"""
def ab_file(request):
    if request.method == 'POST':
        # print(request.POST)  # 只能獲取普通的簡直對資料 檔案不行
        print(request.FILES)  # 獲取檔案資料
        # <MultiValueDict: {'file': [<InMemoryUploadedFile: u=1288812541,1979816195&fm=26&gp=0.jpg (image/jpeg)>]}>
        file_obj = request.FILES.get('file')  # 檔案物件
        print(file_obj.name)
        with open(file_obj.name,'wb') as f:
            for line in file_obj.chunks():  # 推薦加上chunks方法 其實跟不加是一樣的都是一行行的讀取
                f.write(line)

    return render(request,'form.html')