日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

Django是一個開放源代碼的Web應用框架,由Python寫成。學習過的人無不知曉它的強大,今天就為大家由淺入深的進行Python Django框架的講解,哪怕是小白也能輕松理解。

不清楚Python Django框架的看過來,小白也能看懂

 

1、Django簡介

Python下有多款不同的 Web 框架,Django是最有代表性的一種。許多成功的網站和App都基于Django。

Django是一個開源的Web應用框架,由Python寫成。

Django采用了MVC的軟件設計模式,即模型M,視圖V和控制器C。

2、Django的特點

1) 強大的數據庫功能:用python的類繼承,幾行代碼就可以擁有一個動態的數據庫操作API,如果需要也能執行SQL語句。

2) 自帶的強大的后臺功能:幾行代碼就讓網站擁有一個強大的后臺,輕松管理內容。

3) 優雅的網址:用正則匹配網址,傳遞到對應函數。

4) 模板系統:強大,易擴展的模板系統,設計簡易,代碼和樣式分開設計,更易管理。

5) 緩存系統:與memcached或其它緩存系統聯用,表現更出色,加載速度更快。

6) 國際化:完全支持多語言應用,允許你定義翻譯的字符,輕松翻譯成不同國家的語言。

3、Django項目目錄

1) urls.py:網址入口,關聯到對應的views.py中的一個函數(或generic類),訪問網址就對應一個函數。

2) views.py:處理用戶發出的請求,與urls.py對應, 通過渲染templates中的網頁可以將顯示內容,如登陸后的用戶名,用戶請求的數據等輸出到網頁。

3) models.py:與數據庫操作相關,存入或讀取數據時用到,用不到數據庫時可以不使用。

4) forms.py:表單,用戶在瀏覽器上輸入數據提交,對數據的驗證工作以及輸入框的生成等工作,也可以不使用。

5) templates文件夾:views.py中的函數渲染templates中的html模板,得到動態內容的網頁,可以用緩存來提高速度。

6) admin.py:后臺,可以用很少的代碼就擁有一個強大的后臺。

7) settings.py:Django 的配置文件,如 DEBUG 的開關,靜態文件的位置等。

4、Django基本命令

1) 新建一個項目:

django-admin.py startproject project-name

在 windows 上如果報錯,嘗試用 django-admin 代替 django-admin.py 。

2) 新建一個APP:

python manage.py startapp app-name

django-admin.py startapp app-name

一般一個項目有多個app, 當然通用的app也可以在多個項目中使用。

3) 啟動服務器:

python manage.py runserver 0.0.0.0:8000

python manage.py runserver

前者讓其它電腦可連接到服務器,監聽機器上所有ip的8000端口,訪問時用電腦的ip代替 127.0.0.1(8000為端口號,如果不說明,則端口號默認為8000);后者在本電腦訪問服務器,訪問時ip為127.0.0.1。

5、視圖與網址

views.py:

from django.http import HttpResponse
def helloWorld(request):
return HttpResponse("Hello world! ")

urls.py:

啟動服務器,并在瀏覽器訪問:127.0.0.1:8000。

修改后的urls.py:

from django.conf.urls import url
from . import view
urlpatterns = [
url(r'^helloWorld$', view.helloWorld)
]

啟動服務器,并在瀏覽器訪問:127.0.0.1:8000/helloWorld。

url() 函數:可以接收四個參數,分別是兩個必選參數regex、view 和兩個可選參數kwargs、name:

① regex:正則表達式,與之匹配的 URL 會執行對應的第二個參數 view。

② view:用于執行與正則表達式匹配的 URL 請求。

③ kwargs:視圖使用的字典類型的參數。

④ name:用來反向獲取 URL。

6、Django模板

1) 實例:

① 在app目錄中,創建 templates 目錄并建立 helloWorld.html文件:

<h1>{{ helloWorld }}</h1>

② 向Django說明模板文件的路徑,修改settings.py文件,修改 TEMPLATES 中的 DIRS 為 [BASE_DIR+"/templates",]。

③ 修改views.py:

from django.shortcuts import render
def hello(request):
context = {}
context['helloWorld'] = 'Hello World!'
return render(request, 'helloWorld.html', context)

render使用了一個字典 context 作為參數,context 字典中元素的鍵值 "helloWorld" 對應了模板中的變量 "{{ helloWorld }}"。

④ 啟動服務器,并在瀏覽器訪問:127.0.0.1:8000/helloWorld。

2) Django 模板標簽

① if/else 標簽

if/else支持嵌套,{% if %} 標簽接受and、or 或not關鍵字來對多個變量做判斷,或對變量取反。

{% if condition %}

...

{% endif %}

或者:

{% if condition1 %}

...

{% elif condiiton2 %}

...

{% else %}

...

{% endif %}

② for 標簽

{% for %} 允許在一個序列上迭代。支持嵌套。每一次循環中,模板系統會渲染在 {% for %} 和 {% endfor %} 之間的所有內容。

<ul>

{% for person in list %}

<li>{{ person.name }}</li>

{% endfor %}

</ul>

給標簽增加一個 reversed 使得該列表被反向迭代:

{% for person in list %}

...

{% endfor %}

③ ifequal/ifnotequal 標簽

{% ifequal %} 標簽比較兩個值,當他們相等時,顯示在 {% ifequal %} 和 {% endifequal %} 之中所有的值。和 {% if %} 類似, {% ifequal %} 支持可選的 {% else%} 標簽。

{% ifequal person1 person2 %}

<h1>YES</h1>

{% endifequal %}

④ 注釋標簽

Django 注釋使用 {# #}。

⑤ 過濾器

模板過濾器可以在變量被顯示前修改它,過濾器使用管道字符:

{{ name|lower }}大寫轉換為小寫。

一個過濾器管道的輸出又可以作為下一個管道的輸入:

{{ name|first|upper }}將第一個元素轉化為大寫。

有些過濾器有參數,過濾器的參數跟隨冒號之后并總是以雙引號包含:

{{ name|truncatewords:"3" }}顯示變量的前3個詞。

addslashes:添加反斜杠到任何反斜杠、單引號或者雙引號前面。

date:按指定的格式字符串參數格式化date或datetime對象,如{{ pub_date|date:"F j, Y" }}。

length:返回變量的長度。

⑥ include 標簽

{% include %} 標簽允許在模板中包含其它的模板的內容。

{% include "test.html" %}

7、Django模型

Django 對各種數據庫提供了很好的支持,Django 為數據庫提供了統一的調用API,可以根據業務需求選擇不同的數據庫。

以MySQL數據庫為例,安裝 mysql 驅動的命令:sudo pip install mysqlclient。

1) 數據庫配置

在項目的settings.py文件中找到 DATABASES 配置項,將其信息修改為:

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 或者使用 mysql.connector.django
'NAME': 'test',
'USER': 'test',
'PASSWORD': 'test123',
'HOST':'localhost',
'PORT':'3306',
}
}

這里添加了中文注釋,所以需要在settings.py 文件頭部添加 # -*- coding: UTF-8 -*-。

2) 定義模型

① 創建APP:

Django規定,如果要使用模型,必須要創建一個app,使用以下命令創建一個app:python manage.py startapp TestModel。

② 修改 TestModel/models.py 文件:

from django.db import models
class Test(models.Model):
ame = models.CharField(max_length=20)

類名代表了數據庫表名,且繼承了models.Model,類里面的字段代表數據表中的字段(name),數據類型則由CharField(相當于varchar)、DateField(相當于datetime), max_length 參數限定長度。

③ 在settings.py中找到INSTALLED_APPS這一項,添加:'TestModel'。

④ 在命令行中運行以下命令,創建數據表,表名為應用名_類名(如:TestModel_test):

view plain copy

python manage.py migrate # 創建表結構
python manage.py makemigrations TestModel # 讓Django知道模型有一些變更
python manage.py migrate TestModel # 創建表結構

3) 數據庫操作

添加database.py文件:

[python] view plain copy

from django.http import HttpResponse
from TestModel.models import Test
def database(request):
test = Test(name='Alice')
test.save()
return HttpResponse("<p>數據添加成功!</p>")

修改 urls.py:

view plain copy

from django.conf.urls import *
from . import view,database
urlpatterns = [
url(r'^hello$', view.hello),
url(r'^database$', database.database)
]

啟動服務器,并在瀏覽器訪問:127.0.0.1:8000/database。

① 添加數據

[python] view plain copy

from django.http import HttpResponse
from TestModel.models import Test
def database(request):
test = Test(name='Alice')
test.save()
return HttpResponse("<p>數據添加成功!</p>")

② 獲取數據

[python] view plain copy

from django.http import HttpResponse
from TestModel.models import Test
def database(request):
# 初始化
response = ""
response1 = ""
# 通過objects這個模型管理器的all()獲得所有數據行,相當于SQL中的SELECT * FROM
list = Test.objects.all()
# filter相當于SQL中的WHERE,可設置條件過濾結果
response2 = Test.objects.filter(id=1)
# 獲取單個對象
response3 = Test.objects.get(id=1)
# 限制返回的數據,相當于SQL中的OFFSET 0 LIMIT 2;
Test.objects.order_by('name')[0:2]
# 數據排序
Test.objects.order_by("id")
# 上面的方法可以連鎖使用
Test.objects.filter(name="Alice").order_by("id")
# 輸出所有數據
for var in list:
response1 += var.name + " "
response = response1
return HttpResponse("<p>" + response + "</p>")

③ 更新數據

[python] view plain copy

from django.http import HttpResponse
from TestModel.models import Test
def database(request):
# 修改id=1的name字段再save,相當于SQL中的UPDATE
test = Test.objects.get(id=1)
test.name='Alice'
test.save()
# 另一種方式
# Test.objects.filter(id=1).update(name='Alice)
# 修改所有的列
# Test.objects.all()..update(name='google')
return HttpResponse("<p>數據修改成功</p>")

④ 刪除數據

刪除數據庫中的對象只需調用該對象的delete()方法即可:

[python] view plain copy

from django.http import HttpResponse
from TestModel.models import Test
def database(request):
# 刪除id=1的數據
test = Test.objects.get(id=1)
test.delete()
# 另外一種方式
# Test.objects.filter(id=1).delete()
# 刪除所有數據
# Test.objects.all().delete()
return HttpResponse("<p>數據刪除成功</p>")

8、Django表單

1) Get方法

① 創建一個 search.py 文件,用于接收用戶的請求:

[python] view plain copy

from django.http import HttpResponse
from django.shortcuts import render_to_response
# 表單
def search_form(request):
return render_to_response('search_form.html')
# 接收請求數據
def search(request):
request.encoding='utf-8'
if 'q' in request.GET:
message = '搜索的內容為: ' + request.GET['q'].encode('utf-8')
else:
message = '提交了空表單'
return HttpResponse(message)

② 在templates中添加 search_form.html 表單:

[html] view plain copy

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<form action="/search" method="get">
<input type="text" name="q">
<input type="submit" value="搜索">
</form>
</body>
</html>

③ 修改urls.py:

[python] view plain copy

from django.conf.urls import url
from . import view,database,search
urlpatterns = [
url(r'^helloWorld$', view.helloWorld),
url(r'^database$', database.database),
url(r'^search-form$', search.search_form),
url(r'^search$', search.search)
]

④ 啟動服務器,并在瀏覽器訪問:127.0.0.1:8000/search_form。

2) Post方法

① 在templates中添加 post.html 表單:

[python] view plain copy

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<form action="/search-post" method="post">
{% csrf_token %}
<input type="text" name="q">
<input type="submit" value="搜索">
</form>
<p>{{ rlt }}</p>
</body>
</html>

{% csrf_token %}標簽:csrf 全稱是 Cross Site Request Forgery,這是Django提供的防止偽裝提交請求的功能。POST 方法提交的表格,必須有此標簽。

② 新建 search2.py 文件并使用 search_post 函數來處理 POST 請求:

[python] view plain copy

from django.shortcuts import render
from django.views.decorators import csrf
# 接收POST請求數據
def search_post(request):
ctx ={}
if request.POST:
ctx['rlt'] = request.POST['q']
return render(request, "post.html", ctx)

③ 修改urls.py:

[python] view plain copy

from django.conf.urls import url
from . import view,database,search
urlpatterns = [
url(r'^helloWorld$', view.helloWorld),
url(r'^database$', database.database),
url(r'^search-form$', search.search_form),
url(r'^search$', search.search)
url(r'^search-post$', search2.search_post)
]

④ 啟動服務器,并在瀏覽器訪問:127.0.0.1:8000/search_post。

以上就是對Python Django框架進行的知識梳理講解,包括Django簡介、特點、項目目錄等內容,希望你能學會。

分享到:
標簽:框架 Python
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定