首頁  >  文章  >  後端開發  >  深入了解Python之Django框架

深入了解Python之Django框架

零到壹度
零到壹度原創
2018-04-03 16:21:021666瀏覽

這篇文章主要介紹了Python程式碼實現Django框架,小編覺得蠻不錯的,現在分享給大家,也給大家做個參考。一起跟著小編過來看看吧

一、URLconf請求網站的時候,是透過url找到對應的函數來執行,而Django中的url配置在與專案同名的資料夾下的settings.py中進行設定

1、設定

(1)、test1/settings.py設定檔

#settings.py中預設已經透過ROOT_URLCONF指定了url的配置,指向的是test1下的urls.py檔案:


(2)、test1/ urls.py中設定檔如下:


注意:

    

#        在test1/urls.py中包含設定,在各自應用中建立對應的urls.py,在每個應用程式下的urls.py檔案中進行具體的設定。

        定義urlpartterns列表,儲存url( )對象,這個列表名稱是固定的。

2、url定義的語法

url( )物件被定義在django.conf.urls套件中,由兩種語法結構

(1)、語法一:包含,在專案同名資料夾下的urls.py中包含其他應用程式的urls.py

        在自訂的應用程式中建立一個urls.py檔案來定義url( ),然後在專案同名文件夾下的urls.py中將自訂的urls.py引入,這樣做的目的是將urls.py配置到應用程式內部,資料更清晰且易於維護。

test1/urls.py中引入booktest/urls.py的語法

url(r'^',include('应用名称.urls')),
# 此处的urls指的是各自应用(booktest)中urls.py文件的名称,如果是urls.py,即为urls

(2)、語法二:定義,指定URL和視圖函數的對應關係

#在各自應用內部建立urls.py,指定請求位址與檢視的對應關係,格式如下:

url(正则,'视图函数名称')

範例:

booktest/urls.py中建立首頁的url:

from django.conf.urls import url
from booktest import views
urlpatterns=[
    url(r'^$',views.index),
]

注意:正規部分建議使用r,表示字串不轉義,這樣在正規表示式中使用\只寫一個就可以。 不能在開始加反斜杠,建議在結束加反斜杠,因為瀏覽器的url在結尾加\和不加都一樣。

3、取得url中攜帶的參數值

請求的url被視為一個普通的python字串,進行匹配不包括域名、get或post的請求參數,如:請求位址如下:

http://localhost:8080/detail/1?a=10

以上請求位址中,與url( )函數中正規符合的字串只有:

detail/

如果想在請求的url中攜帶RESTFUL風格的參數,需要在url( )函數的正規表示式中是用分組,即使用()號,分為:位置參數、關鍵字參數。

注意:兩種參數方式不要混合使用,在一個正規表示式中只能使用一種參數方式。

(1)、位置參數

直接使用()號,透過位置參數傳遞給視圖

在url( )函數中的正規表示式寫法為:

url(r'^detail(\d+)/$',views.show_books),

views.py中對應的函數寫法為:

def show_books(request, id):    # 此处获取的id为1
    return HttpResponse('show_books')

(2)、關鍵字參數

#使用關鍵字參數,則在url()函數中的正規表達式分組是,為每個組命名

如訪問的url為:http://localhost:8000/delete/1?a=10

在url()函數的正則表達式寫法為:

url(r&#39;^delete(?P<id1>\d+)/$&#39;,views.show_book),

在views.py中的函數寫法為:

def show_arg(request,id1):
    return HttpResponse(&#39;show %s&#39;%id1)

注意:如果使用關鍵字參數的話,則views.py中對應的函數的參數名稱必須和正則表達式中組的命名一直,否則將報錯。 二、視圖

1、什麼是視圖

        視圖就是python中的函數,視圖一般被定義在"應用/views.py"檔案中,即本例的"booktest/views.py"中。

       視圖必須傳回一個HttpResponse物件或子物件作為回應。回應可以是一張網頁的HTML內容,也可以是一個重定向(redirect)函數,或一個404錯誤等。

        視圖的第一個參數必須是HttpRequest對象,其他參數也可能包括:關鍵字參數或位置參數(二者取其一)

            

2、內建錯誤視圖

(1)、內建錯誤視圖

        Django內建處理HTTP錯誤的檢視,主錯誤及檢視包括:

 

            # 

            # 

            # 

   page not found 視圖

###                500:server error 視圖######        想要看到錯誤視圖,而非偵錯資訊,則需要修改設定/settings.py"test/settings.py"test/settings。 ##


(2)、404错误及视图

        将请求地址进行url匹配之后,没有找到匹配的正则表达式,则调用404视图,这个视图会调用404.html模版进行渲染,视图传递变量request_path给模版,表示导致错误的URL。

在templates中创建404.html

<html>
<head>
    <title></title>
</head>
<body>
找不到了
<hr/>
{{request_path}}
</body>
</html>

在浏览器中输入如下网址:

http://localhost:8000/test/

运行效果如下:


(3)、500错误及视图

        在视图中代码运行报错将会发生500错误,调用内置错误视图,使用templates/500.html模版进行渲染。

三、HttpRequest对象

1、HttpRequest对象

        服务器接收到HTTP请求后,会根据报文创建HttpRequest对象,这个对象不需要我们手动创建,直接使用服务器构建好的对象即可。视图函数中的第一个参数必须是HttpRequest对象,该对象类定义在django.http模块中。

2、属性

        path:一个字符串,表示请求的页面的完整路径,不包含域名和参数部分。

        method:一个字符串,表示请求使用的HTTP方法,常用值包括:'GET'、'POST'。

                在浏览器中给出地址发出请求采用get方式,如超链接。

                

                在浏览器中点击表单的提交按钮发起请求,如果表单的method设置为post则为post请求。

        encoding:一个字符串,表示提交的数据的编码方式。

                如果为None则表示使用浏览器的默认设置,一般为utf-8。

                这个属性是可写的,可以通过修改它来修改访问表单数据使用的编码,接下来对属性的任何访问将使用新的encoding值。

        GET:QueryDict类型对象,类似于字典,包含get请求方式的所有参数。

        POST:QueryDict类型对象,类似于字典,包含post请求方式的所有参数。

        FILES:一个类似于字典的对象,包含所有的上传文件。

        COOKIES:一个标准的Python字典,包含所有的cookie,键和值都为字符串。

        session:一个既可读又可写的类似于字典的对象,表示当前的会话,只有当Django 启用会话的支持时才可用,详细内容见"状态保持"。

以上是深入了解Python之Django框架的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn