這篇文章主要介紹了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'^delete(?P<id1>\d+)/$',views.show_book),
在views.py中的函數寫法為:
def show_arg(request,id1): return HttpResponse('show %s'%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中文網其他相關文章!