国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

關于“Python”的核心知識點整理大全64

這篇具有很好參考價值的文章主要介紹了關于“Python”的核心知識點整理大全64。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

關于“Python”的核心知識點整理大全64,掌握Python分類專欄:開啟智能數(shù)據(jù)處理之旅!,python,python,開發(fā)語言,數(shù)據(jù)庫,筆記

目錄

20.2.15 確保項目的安全

settings.py

20.2.16 提交并推送修改

20.2.17 創(chuàng)建自定義錯誤頁面

1. 創(chuàng)建自定義模板

500.html

settings.py

settings.py

注意

views.py

20.2.18 繼續(xù)開發(fā)

往期快速傳送門??(在文章最后):

感謝大家的支持!歡迎訂閱收藏!專欄將持續(xù)更新!


關于“Python”的核心知識點整理大全64,掌握Python分類專欄:開啟智能數(shù)據(jù)處理之旅!,python,python,開發(fā)語言,數(shù)據(jù)庫,筆記

20.2.15 確保項目的安全

當前,我們部署的項目存在一個嚴重的安全問題:settings.py包含設置DEBUG=True,它在發(fā)生錯誤時顯示調(diào)試信息。開發(fā)項目時,Django的錯誤頁面向你顯示了重要的調(diào)試信息,如果將項目 部署到服務器后依然保留這個設置,將給攻擊者提供大量可供利用的信息。我們還需確保任何人 都無法看到這些信息,也不能冒充項目托管網(wǎng)站來重定向請求。 下面來修改settings.py,以讓我們能夠在本地看到錯誤消息,但部署到服務器后不顯示任何 錯誤消息:

settings.py

--snip--
# Heroku設置
if os.getcwd() == '/app':
 --snip--
 # 讓request.is_secure()承認X-Forwarded-Proto頭
 SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
 # 只允許Heroku托管這個項目
1 ALLOWED_HOSTS = ['learning-log.herokuapp.com']
2 DEBUG = False
 # 靜態(tài)資產(chǎn)配置
 --snip-- 

我們只需做兩方面的修改。在1處,修改ALLOWED_HOSTS,只允許Heroku托管這個項目。你需 要使用應用程序的名稱,可以是Heroku提供的名稱(如afternoon-meadow-2775.herokuapp.com), 也可以是你選擇的名稱。在2處,我們將DEBUG設置為False,讓Django不在錯誤發(fā)生時顯示敏感 信息。

20.2.16 提交并推送修改

現(xiàn)在需要將對settings.py所做的修改提交到Git倉庫,再將修改推送到Heroku。下面的終端會 話演示了這個過程:

1 (ll_env)learning_log$ git commit -am "Set DEBUG=False for Heroku."
[master 081f635] Set DEBUG=False for Heroku.
1 file changed, 4 insertions(+), 2 deletions(-)
2 (ll_env)learning_log$ git status
# On branch master
nothing to commit, working directory clean
(ll_env)learning_log$

我們執(zhí)行命令git commit,并指定了一條簡短而具有描述性的提交消息(見1)。別忘了,標 志-am讓Git提交所有修改過的文件,并記錄一條日志消息。Git找出唯一一個修改過的文件,并將 所做的修改提交到倉庫。

2處顯示的狀態(tài)表明我們在倉庫的分支master上工作,當前沒有任何未提交的修改。推送到Heroku之前,必須檢查狀態(tài)并看到剛才所說的消息。如果你沒有看到這樣的消息,說明有未提交 的修改,而這些修改將不會推送到服務器。在這種情況下,可嘗試再次執(zhí)行命令commit,但如果 你不知道該如何解決這個問題,請閱讀附錄D,更深入地了解Git的用法。 下面來將修改后的倉庫推送到Heroku:

(ll_env)learning_log$ git push heroku master
--snip--
remote: -----> Python app detected
remote: -----> Installing dependencies with pip
--snip--
remote: -----> Launching... done, v8
remote: https://learning-log.herokuapp.com/ deployed to Heroku
remote: Verifying deploy.... done.
To https://git.heroku.com/learning-log.git
 4c9d111..ef65d2b master -> master
(ll_env)learning_log$ 

Heroku發(fā)現(xiàn)倉庫發(fā)生了變化,因此重建項目,確保所有的修改都已生效。它不會重建數(shù)據(jù)庫, 因此這次無需執(zhí)行命令migrate。 現(xiàn)在要核實部署更安全了,請輸入項目的URL,并在末尾加上我們未定義的擴展。例如,嘗 試訪問http://learning-log.herokuapp.com/letmein/。你將看到一個通用的錯誤頁面,它沒有泄露任 何有關該項目的具體信息。如果你嘗試向本地的“學習筆記”發(fā)出同樣的請求——輸入URL http://localhost:8000/letmein/,你將看到完整的Django錯誤頁面。這樣的結果非常理想,你接著開 發(fā)這個項目時,將看到信息豐富的錯誤消息,但用戶看不到有關項目代碼的重要信息。

20.2.17 創(chuàng)建自定義錯誤頁面

在第19章,我們對“學習筆記”進行了配置,使其在用戶請求不屬于他的主題或條目時返回 404錯誤。你可能還遇到過一些500錯誤(內(nèi)部錯誤)。404錯誤通常意味著你的Django代碼是正確 的,但請求的對象不存在。500錯誤通常意味著你編寫的代碼有問題,如views.py中的函數(shù)有問題。 當前,在這兩種情況下,Django都返回通用的錯誤頁面,但我們可以編寫外觀與“學習筆記”一 致的404和500錯誤頁面模板。這些模板必須放在根模板目錄中。

1. 創(chuàng)建自定義模板

在文件夾learning_log/learning_log中,新建一個文件夾,并將其命名為templates;再在這個 文件夾中新建一個名為404.html的文件,并在其中輸入如下內(nèi)容:

404.html

{% extends "learning_logs/base.html" %}
{% block header %}
 <h2>The item you requested is not available. (404)</h2>
{% endblock header %}

這個簡單的模板指定了通用的404錯誤頁面包含的信息,并且該頁面的外觀與網(wǎng)站的其他部 分一致。 再創(chuàng)建一個名為500.html的文件,并在其中輸入如下代碼:

500.html
{% extends "learning_logs/base.html" %}
{% block header %}
 <h2>There has been an internal error. (500)</h2>
{% endblock header %} 

這些新文件要求對settings.py做細微的修改:

settings.py
--snip--
TEMPLATES = [
 {
 'BACKEND': 'django.template.backends.django.DjangoTemplates',
 'DIRS': [os.path.join(BASE_DIR, 'learning_log/templates')],
 'APP_DIRS': True,
 --snip--
 },
]
--snip-

這項修改讓Django在根模板目錄中查找錯誤頁面模板。

2. 在本地查看錯誤頁面

在將項目推送到Heroku之前,如果你要在本地查看錯誤頁面是什么樣的,首先需要在本地設 置中設置Debug=False,以禁止顯示默認的Django調(diào)試頁面。為此,可對settings.py做如下修改(請 確保你修改的是用于本地環(huán)境的settings.py部分,而不是用于Heroku的部分):

settings.py
--snip--
# 安全警告:不要在在線環(huán)境中啟用調(diào)試!
DEBUG = False
ALLOWED_HOSTS = ['localhost']
--snip-- 

DEBUG被設置為False時,你必須在ALLOWED_HOSTS中指定一個主機?,F(xiàn)在,請求一個不屬于你 的主題或條目,以查看404錯誤頁面;請求不存在的URL(如localhost:8000/letmein/),以查看500 錯誤頁面。 查看錯誤頁面后,將DEBUG重新設置為True,以方便你進一步開發(fā)“學習筆記”。(在settings.py 中用于Heroku部署的部分中,確保DEBUG依然被設置為False)。


注意

500錯誤頁面不會顯示任何有關當前用戶的信息,因為發(fā)生服務器錯誤時,Django不會通 過響應發(fā)送任何上下文信息。


3. 將修改推送到Heroku

現(xiàn)在需要提交對模板所做的修改,并將這些修改推送到Heroku

1 (ll_env)learning_log$ git add .
2 (ll_env)learning_log$ git commit -am "Added custom 404 and 500 error pages."
 3 files changed, 15 insertions(+), 10 deletions(-)
 create mode 100644 learning_log/templates/404.html
 create mode 100644 learning_log/templates/500.html
3 (ll_env)learning_log$ git push heroku master
--snip--
remote: Verifying deploy.... done.
To https://git.heroku.com/learning-log.git
 2b34ca1..a64d8d3 master -> master
(ll_env)learning_log$ 

在1處,我們執(zhí)行了命令git add,這是因為我們在項目中創(chuàng)建了一些新文件,因此需要讓 Git跟蹤這些文件。然后,我們提交所做的修改(見2),并將修改后的項目推送到Heroku(見3)。 現(xiàn)在,錯誤頁面出現(xiàn)時,其樣式應該與網(wǎng)站的其他部分一致,這樣在發(fā)生錯誤時,用戶將不 會感到突兀。

4. 使用方法get_object_or_404() 現(xiàn)在,如果用戶手工請求不存在的主題或條目,將導致500錯誤。Django嘗試渲染請求的頁 面,但沒有足夠的信息來完成這項任務,進而引發(fā)500錯誤。對于這種情形,將其視為404錯誤更 合適,為此可使用Django快捷函數(shù)get_object_or_404()。這個函數(shù)嘗試從數(shù)據(jù)庫獲取請求的對象, 如果這個對象不存在,就引發(fā)404異常。我們在views.py中導入這個函數(shù),并用它替換函數(shù)get():

views.py
--snip--
from django.shortcuts import render, get_object_or_404
from django.http import HttpResponseRedirect, Http404
--snip--
@login_required
def topic(request, topic_id):
 """顯示單個主題及其所有的條目"""
 topic = get_object_or_404(Topic, id=topic_id)
 # 確定主題屬于當前用戶
 --snip--

現(xiàn)在,如果你請求不存在的主題(例如,使用URL http://localhost:8000/topics/999999/),將 看到404錯誤頁面。為部署這里所做的修改,再次提交,并將項目推送到Heroku。

20.2.18 繼續(xù)開發(fā)

將項目“學習筆記”推送到服務器后,你可能想進一步開發(fā)它或開發(fā)要部署的其他項目。更 新項目的過程幾乎完全相同。

首先,你對本地項目做必要的修改。如果在修改過程中創(chuàng)建了新文件,使用命令git add . (千萬別忘記這個命令末尾的句點)將它們加入到Git倉庫中。如果有修改要求遷移數(shù)據(jù)庫,也需 要執(zhí)行這個命令,因為每個遷移都將生成新的遷移文件。

然后,使用命令git commit -am "commit message"將修改提交到倉庫,再使用命令git push heroku master將修改推送到Heroku。如果你在本地遷移了數(shù)據(jù)庫,也需要遷移在線數(shù)據(jù)庫。為 此,你可以使用一次性命令heroku run python manage.py migrate,也可使用heroku run bash打 開一個遠程終端會話,并在其中執(zhí)行命令python manage.py migrate。然后訪問在線項目,確認 你期望看到的修改已生效。

在這個過程中很容易犯錯,因此看到錯誤時不要大驚小怪。如果代碼不能正確地工作,請重 新審視所做的工作,嘗試找出其中的錯誤。如果找不出錯誤,或者不知道如何撤銷錯誤,請參閱 附錄C中有關如何尋求幫助的建議。不要羞于去尋求幫助:每個學習開發(fā)項目的人都可能遇到過 你面臨的問題,因此總有人樂意伸出援手。通過解決遇到的每個問題,可讓你的技能穩(wěn)步提高, 最終能夠開發(fā)可靠而有意義的項目,還能解決別人遇到的問題。


關于“Python”的核心知識點整理大全62-CSDN博客

關于“Python”的核心知識點整理大全37-CSDN博客

關于“Python”的核心知識點整理大全25-CSDN博客

關于“Python”的核心知識點整理大全12-CSDN博客文章來源地址http://www.zghlxwxcb.cn/news/detail-777331.html

往期快速傳送門??(在文章最后):

感謝大家的支持!歡迎訂閱收藏!專欄將持續(xù)更新!

到了這里,關于關于“Python”的核心知識點整理大全64的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 關于“Python”的核心知識點整理大全9

    關于“Python”的核心知識點整理大全9

    目錄 ?編輯 5.2.4 比較數(shù)字 5.2.5 檢查多個條件 1. 使用and檢查多個條件 2. 使用or檢查多個條件 5.2.6 檢查特定值是否包含在列表中 5.2.7 檢查特定值是否不包含在列表中 banned_users.py 5.2.8 布爾表達式 5.3 if 語句 5.3.1 簡單的 if 語句 5.3.2 if-else 語句 5.3.3 if-elif-else 結構 5.3.4 使用多個

    2024年02月05日
    瀏覽(27)
  • 關于“Python”的核心知識點整理大全63

    關于“Python”的核心知識點整理大全63

    目錄 20.2.11 使用 Git 跟蹤項目文件 1. 安裝Git 2. 配置Git 3. 忽略文件 .gitignore 注意 4. 提交項目 20.2.12 推送到 Heroku 注意 20.2.13 在 Heroku 上建立數(shù)據(jù)庫 20.2.14 改進 Heroku 部署 1. 在Heroku上創(chuàng)建超級用戶 注意 注意 如果你閱讀完了第17章,就知道Git是一個版本控制程序,讓你能夠在每次

    2024年01月25日
    瀏覽(26)
  • 關于“Python”的核心知識點整理大全23

    關于“Python”的核心知識點整理大全23

    目錄 ?編輯 第10 章 文件和異常 10.1 從文件中讀取數(shù)據(jù) 10.1.1 讀取整個文件 pi_digits.txt file_reader.py 10.1.2 文件路徑 10.1.3 逐行讀取 file_reader.py 10.1.4 創(chuàng)建一個包含文件各行內(nèi)容的列表 10.1.5 使用文件的內(nèi)容 pi_string.py 往期快速傳送門??(在文章最后): 感謝大家的支持!歡迎訂

    2024年02月03日
    瀏覽(17)
  • 關于“Python”的核心知識點整理大全45

    關于“Python”的核心知識點整理大全45

    目錄 15.4.6 繪制直方圖 die_visual.py 注意 15.4.7 同時擲兩個骰子 dice_visual.py 15.4.8 同時擲兩個面數(shù)不同的骰子 different_dice.py 15.5 小結 第 16 章 16.1 CSV 文件格式 16.1.1 分析 CSV 文件頭 highs_lows.py 注意 16.1.2 打印文件頭及其位置 highs_lows.py 往期快速傳送門??(在文章最后): 感謝大家

    2024年02月04日
    瀏覽(16)
  • 關于“Python”的核心知識點整理大全57

    關于“Python”的核心知識點整理大全57

    目錄 3. 模板edit_entry edit_entry.html 4. 鏈接到頁面edit_entry topic.html 19.2 創(chuàng)建用戶賬戶 19.2.1 應用程序 users 1. 將應用程序users添加到settings.py中 settings.py 2. 包含應用程序users的URL urls.py 19.2.2 登錄頁面 urls.py 1. 模板login.html login.html 2. 鏈接到登錄頁面 base.html 3. 使用登錄頁面 往期快速傳

    2024年01月24日
    瀏覽(27)
  • 關于“Python”的核心知識點整理大全39

    關于“Python”的核心知識點整理大全39

    目錄 ?編輯 14.1.5 將 Play 按鈕切換到非活動狀態(tài) game_functions.py 14.1.6 隱藏光標 game_functions.py game_functions.py 14.2 提高等級 14.2.1 修改速度設置 settings.py settings.py settings.py game_functions.py 14.2.2 重置速度 game_functions.py 14.3 記分 game_stats.py 14.3.1 顯示得分 scoreboard.py scoreboard.py scoreboard.p

    2024年02月04日
    瀏覽(38)
  • 關于“Python”的核心知識點整理大全37

    關于“Python”的核心知識點整理大全37

    目錄 13.6.2 響應外星人和飛船碰撞 game_stats.py settings.py alien_invasion.py game_functions.py ship.py 注意 13.6.3 有外星人到達屏幕底端 game_functions.py 13.6.4 游戲結束 game_stats.py game_functions.py 13.7 確定應運行游戲的哪些部分 alien_invasion.py 13.8 小結 第14 章 記 分 14.1 添加 Play 按鈕 game_stats.py 往

    2024年02月04日
    瀏覽(31)
  • 關于“Python”的核心知識點整理大全53

    關于“Python”的核心知識點整理大全53

    目錄 18.2.7 Django shell 注意 18.3 創(chuàng)建網(wǎng)頁:學習筆記主頁 18.3.1 映射 URL urls.py urls.py 注意 18.3.2 編寫視圖 views.py 18.3.3 編寫模板 index.html 往期快速傳送門??(在文章最后): 感謝大家的支持!歡迎訂閱收藏!專欄將持續(xù)更新! 輸入一些數(shù)據(jù)后,就可通過交互式終端會話以編程方

    2024年01月25日
    瀏覽(21)
  • 關于“Python”的核心知識點整理大全36

    關于“Python”的核心知識點整理大全36

    目錄 13.4.4 向下移動外星人群并改變移動方向 game_functions.py alien_invasion.py 13.5 射殺外星人 13.5.1 檢測子彈與外星人的碰撞 game_functions.py alien_invasion.py 13.5.2 為測試創(chuàng)建大子彈 13.5.3 生成新的外星人群 game_functions.py alien_invasion.py 13.5.4 提高子彈的速度 settings.py 13.5.5 重構 update_bull

    2024年02月03日
    瀏覽(32)
  • 關于“Python”的核心知識點整理大全18

    關于“Python”的核心知識點整理大全18

    目錄 ?編輯 8.5 傳遞任意數(shù)量的實參 pizza.py 8.5.1 結合使用位置實參和任意數(shù)量實參 8.5.2 使用任意數(shù)量的實參 user_profile.py 8.6 將函數(shù)存儲在模塊中 8.6.1 導入整個模塊 pizza.py making_pizzas.py 8.6.2 導入特定的函數(shù) 8.6.3 使用 as 給函數(shù)指定別名 關于“Python”的核心知識點整理大

    2024年02月04日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包