Django框架下載與Django框架初識


Django下載安裝

#下載
	pip3 install django==1.11.9 
	pip3 install django==1.11.9 -i http://xxxxxx  指定源
#創建項目
	django-admin startproject mysite   創建了一個名為"mysite"的Django 項目
#啟動項目
	python manage.py runserver  默認是127.0.0.1:8000
	python manage.py runserver 127.0.0.1  默認端口號是8000
	python manage.py runserver 0.0.0.0:80 修改IP和端口
#創建應用
	python manage.py startapp blog   #通過執行manage.py文件來創建應用,執行這句話一定要注意,你應該在這個manage.py的文件所在目錄下執行這句話,因為其他目錄里面沒有這個文件

Django項目目錄結構

#manage.py ----- 
	Django項目里面的工具,通過它可以調用django shell和數據庫,啟動關閉項目與項目交互等,不管你將框架分了幾個文件,必然有一個啟動文件,其實他們本身就是一個文件。
#settings.py ---- 
	包含了項目的默認設置,包括數據庫信息,調試標志以及其他一些工作的變量。
#urls.py ----- 
	負責把URL模式映射到應用程序。
#wsgi.py ---- 
	runserver命令就使用wsgiref模塊做簡單的web server,后面會看到renserver命令,所有與socket相關的內容都在這個文件里面了,目前不需要關注它。
'''創建的的應用的目錄結構'''
#models.py 
	之前我們寫的那個名為model的文件就是創建表用的,這個文件就是存放與該app(應用)相關的表結構的
#views.py
	存放與該app相關的視圖函數的

admin后台管理系統

#admin是django提供的管理數據的一個平台,可以查看項目的所有數據,包括查看數據,編輯數據,等
1:# 在manage.py Task中創建超級用戶 :createsuperuser,輸入創建賬號,密碼,創建用戶
2:# 在應用的admin文件中添加表,在admin中就可以查看到表了,可以表進行操作
    admin.site.register(models.Author)
    admin.site.register(models.AuthorDetail)
    admin.site.register(models.Publish)
    admin.site.register(models.Book)

Djiango路由分發

# 無名分組參數
	url(r'^articles/(\d+)/(\d+)/', views.articles), #articles/2019/9/
	def articles(request,year,month):  # 位置參數 2019  9
         print(year,type(year)) #2019 <class 'str'>  #匹配出來的所有數據都是字符串
         print(month)
         return HttpResponse(year+'年'+ month +'月' +'所有文章')
# 有名分組參數
    url(r'^articles/(?P<xx>\d+)/(?P<oo>\d+)/', views.articles), #articles/2019/9/
    #xx=2019  oo=9  關鍵字傳參
    def articles(request,oo,xx):  # 關鍵字傳參 2019  9
        print(xx,type(xx)) #2019 <class 'str'>  #匹配出來的所有數據都是字符串
        print(oo)
        return HttpResponse(xx+'年'+ oo +'月' +'所有文章')

POST請求數據傳輸

#方式一:
def login(request):
    #獲取請求的方式是GET還是POST
    path=request.method
    #當請求方式是GET的時候返回login頁面
    if path=='GET':
        return render(request,'login.html')
    else:
        #為POST的時候,判斷用戶名和密碼,返回首頁或者返回登陸頁面
        name=request.POST.get('username')
        password=request.POST.get('password')
        if name=='lijie'and password=='123456':
            return render(request,'home.html')
        else:
            return render(request,'login.html')
#方式二:
def login(request):
    #獲取請求的方式是GET還是POST
    path=request.method
    #當請求方式是GET的時候返回login頁面
    if path=='GET':
        return render(request,'login.html')
    else:
        #為POST的時候,判斷用戶名和密碼,返回首頁或者返回登陸頁面
        #request.POST.dict()可以將獲取的數據變成一個字典的形式,通過鍵值的形式取值
        data=request.POST.dict()
        if data['name']=='lijie'and data['password']=='123456':
            return render(request,'home.html')
        else:
            return render(request,'login.html')

HTTPrequest對象

from django.shortcuts import render
def login(request):
    #request參數就是HTTPrequest對象
    print(request)#<WSGIRequest: GET '/login/'>
    
    #返回請求的路徑,純路徑
    print(request.path)#/login/
    
    #返回請求的路徑,純路徑
    print(request.path_info)#/login/
    
    #返回的是請求的全路徑包括參數,不包含ip地址和端口,沒有參數就返回純路徑
    print(request.get_full_path())#/login/?a=1&b=1
    
    #查看當前的請求類型
    print(request.method)#GET 一般常見的是GET和POST
    
    #返回的是一個QueryDict對象,是HTTP通過GET請求從客戶端發送的請求數據
    #可以使用get方法獲取對象的值:name=request.GET.get('username')
    print(request.GET)#<QueryDict: {}>
    
    # 返回的是一個QueryDict對象,是HTTP通過POST請求從客戶端發送的請求數據
    # 可以使用get方法獲取對象的值:name=request.POST.get('username')
    print(request.POST)#<QueryDict: {}>
    注意:鍵值對的值是多個的時候,比如checkbox類型的input標簽,select標簽,需要用
    request.POST.getlist("hobby")
    
    #返回HTTP請求中的請求體,是byte類型,POST請求的數據就是在body中提取的,GET請求獲取不到數據
    print(request.body)
    
    #返回的是一個python字典,包含所有的HTTP請求頭信息
    print(request.META)
    return render(request,'login.html')

#META的常見值(了解):
    CONTENT_LENGTH —— 請求的正文的長度(是一個字符串)。
    CONTENT_TYPE —— 請求的正文的MIME 類型。
    HTTP_ACCEPT —— 響應可接收的Content-Type。
    HTTP_ACCEPT_ENCODING —— 響應可接收的編碼。
    HTTP_ACCEPT_LANGUAGE —— 響應可接收的語言。
    HTTP_HOST —— 客服端發送的HTTP Host 頭部。
    HTTP_REFERER —— Referring 頁面。
    HTTP_USER_AGENT —— 客戶端的user-agent 字符串。
    QUERY_STRING —— 單個字符串形式的查詢字符串(未解析過的形式)。
    REMOTE_ADDR —— 客戶端的IP 地址。
    REMOTE_HOST —— 客戶端的主機名。
    REMOTE_USER —— 服務器認證后的用戶。
    REQUEST_METHOD —— 一個字符串,例如"GET" 或"POST"。
    SERVER_NAME —— 服務器的主機名。
    SERVER_PORT —— 服務器的端口(是一個字符串)。
    #示例:
	請求中的任何 HTTP 首部轉換為 META 的鍵時,都會將所有字母大寫並將連接符替換為下划線最后加上 HTTP_  前綴。
    所以,一個叫做 X-Bender 的頭部將轉換成 META 中的 HTTP_X_BENDER 鍵。

HTTPResponse對象

def home(request):
    #向前端返回一個字符串
    return HttpResponse('返回一個字符串')
    #向前段返回一個HTML頁面
    return render(request,'home.html')
    #臨時重定向,將請求指向另一個頁面,括號里面寫路徑
    return redirect('/login/')
打賞

免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2021 CODEPRJ.COM