Python 項目實踐三(Web應用程序)第四篇

接著上節繼續學習,本章將建立用戶賬戶

Web應用程序的核心是讓任何用戶都能夠注冊賬戶并能夠使用它,不管用戶身處何方。在本章中,你將創建一些表單,讓用戶能夠添加主題和條目,以及編輯既有的條目。你還將學習Django如何防范對基于表單的網頁發起的常見攻擊,這讓你無需花太多時間考慮確保應用程序安全的問題。

一 讓用戶能夠輸入數據

建立用于創建用戶賬戶的身份驗證系統之前,我們先來添加幾個頁面,讓用戶能夠輸入數據。我們將讓用戶能夠添加新主題、添加新條目以及編輯既有條目。

1.1 用于添加主題的表單

讓用戶輸入并提交信息的頁面都是表單,那怕它看起來不像表單。用戶輸入信息時,我們需要進行驗證,確認提供的信息是正確的數據類型,且不是惡意的信息,如中斷服務器的代碼。然后,我們再對這些有效信息進行處理,并將其保存到數據庫的合適地方。這些工作很多都是由Django自動完成的。

在Django中,創建表單的最簡單方式是使用ModelForm,它根據前面的模型中的信息自動創建表單。創建一個名為forms.py的文件,將其存儲到models.py所在的目錄中,并在其中編寫你的第一個表單:

from django import formsfrom .models import Topicclass TopicForm(forms.ModelForm):class Meta:model = Topicfields=['text']labels={'text':''}

1.2URL模式new_topic

#定義learning_logs的URL模式from django.conf.urls import urlfrom . import viewsapp_name='learning_logs'
urlpatterns=[#主頁url(r'^$',views.index,name='index'),#顯示所有主題,url(r'^topics/$',views.topics,name='topics'),#特定主題的詳細頁面url(r'^topics/(?P<topic_id>\d+)',views.topic,name='topic'),#用于添加新主題的網頁url(r'^new_topic/$',views.new_topic,name='new_topic'),]

1.3 視圖函數new_topic()

函數new_topic()需要處理兩種情形:剛進入new_topic網頁(在這種情況下,它應顯示一個空表單);對提交的表單數據進行處理,并將用戶重定向到網頁topics:

from django.shortcuts import renderfrom django.http import HttpResponseRedirect
from django.urls import reverse_lazyfrom .forms import TopicForm
from .models import Topic# Create your views here.
def index(request):'''學習筆記的主頁'''return render(request,'learning_logs/index.html')def topics(request):topics = Topic.objects.order_by('date_added')context = {'topics': topics}return render(request, 'learning_logs/topics.html', context)def topic(request,topic_id):'''顯示單個主題以及所有的條目'''topic=Topic.objects.get(id=topic_id)entries=topic.entry_set.order_by('-date_added')context = {'topic':topic,'entries':entries}return render(request, 'learning_logs/topic.html', context)def new_topic(request):'''添加新主題'''if request.method !='POST':#未提交數據:創建一個新表單form = TopicForm()else :#POST提交的數據,對數據進行處理form = TopicForm(request.POST)if form.is_valid():form.save()return HttpResponseRedirect(reverse('learning_logs:topics'))context = {'form':form}return render(request,'learning_logs/new_topic.html',context)

1.4 模板new_topic

{% extends "learning_logs/base.html" %}
{% block content %}
<p>Add a new topic:</p><form action="{% url 'learning_logs:new_topic' %}" method='post'>{% csrf_token %}{{ form.as_p }}<button name="submit">add topic</button>
</form>
{% endblock content %}

1.5 鏈接到頁面new_topic

{% extends "learning_logs/base.html" %}
{% block content %}
<p>Topics</p>
<ul>{% for topic in topics %}<li><a href="{% url 'learning_logs:topic' topic.id %}">{{ topic }}</a></li>{% empty %}<li>No topics have been added yet.</li>{% endfor %}
</ul>
<a href="{% url 'learning_logs:new_topic' %}">Add a new topic:</a>
{% endblock content %}

最后的結果如下圖:

?

2 添加新條目

現在用戶可以添加新主題了,但他們還想添加新條目。我們將再次定義URL,編寫視圖函數和模板,并鏈接到添加新條目的網頁。效果如下圖:

3 編輯條目

過程和上面的差不多,這里就不在詳細說了,效果如下:

小結:至此,“學習筆記”已具備了需要的大部分功能。用戶可添加主題和條目,還可根據需要查看任何一組條目。在下一節,我們將實現一個用戶注冊系統,讓任何人都可向“學習筆記”申請賬戶,并創建自己的主題和條目。

?未完待續

?

轉載于:https://www.cnblogs.com/ChinacloudTech/p/8205442.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/281458.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/281458.shtml
英文地址,請注明出處:http://en.pswp.cn/news/281458.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

新手想買二手車 先看看買車后這五個步驟吧

買二手車你該知道 很多人因為資金短缺又或者是想要一輛便宜車“練手”而選擇去買一輛價格低廉&#xff0c;有著一定車齡的二手車。很多人看中二手車正正是因為便宜&#xff0c;以為是購買以后基本不需要再投入新的花費&#xff0c;殊不知這是非常錯誤的想法&#xff0c;因為以下…

yii---where or該如何使用

今天調試YII項目的時候&#xff0c;遇到一個奇葩的事兒&#xff0c;在調試 where or 查詢的時候&#xff1a;調試語句是這樣&#xff1a; $str static::find()->where([or,username > $username,mobile > $account]); echo "<br>"; echo $st…

十六進制編輯器--ImHex

十六進制編輯器是用于編輯單個字節數據的軟件應用程序&#xff0c;主要由程序員或系統管理員使用。常規文本編輯器和十六進制編輯器之間的區別在于常規編輯器表示文件的邏輯內容&#xff0c;而十六進制編輯器表示文件的物理內容。十六進制編輯器可以讓你以十六進制的形式查看或…

計算機第一課 教案 紀律,信息技術開學第一課-紀律

《信息技術開學第一課-紀律》由會員分享&#xff0c;可在線閱讀&#xff0c;更多相關《信息技術開學第一課-紀律(3頁珍藏版)》請在人人文庫網上搜索。1、信息技術開學第一課教學目標&#xff1a;1、 了解學生的基礎情況&#xff0c;選出課代表2、 分好學習小組&#xff0c;選出…

奧迪堅SVRM(Screen-Voice Recording Manager)錄屏軟件正式發布

奧迪堅SVRM(Screen-Voice Recording Manager)能夠對座席通話同步錄音的同時進行座席操作錄屏 實時監控座席屏幕操作&#xff0c;及時糾正操作問題。 座席質檢可以邊聽邊看&#xff0c;為KPI考核提供依據。 利用優秀座席操作記錄對座席進行培訓。 監控坐席人員對敏感信息訪問次數…

小米:開源不僅要站在巨人的肩膀上,還要為巨人指方向

今天上午&#xff0c;第一屆小米開源技術峰會在北京舉行&#xff0c;會上&#xff0c;小米人工智能與云平臺副總裁崔寶秋致開場詞&#xff0c;并發表了《小米開源之路》的演講。 崔寶秋強調小米一直在推動開源&#xff0c;也是開源的倡導者。他告訴我們雷軍創立小米的其中一個重…

容器基本操作

docker run --namefang -it image_id /bin/bash 執行的shell docker ps -a 查看所有容器&#xff0c; -l 查看最近運行容器 docker inspect 查看容器的詳細信息 docker start [-i] container_id 或者名字也可以 docker rm 刪除容器docker ps 查看正在運行的容器do…

計算機及相關設備制造業2020,在現實生活中,接近完全壟斷市場類型的行業包括()。A.計算機及相關設備制造業B.稀有...

在現實生活中&#xff0c;接近完全壟斷市場類型的行業包括()。A&#xff0e;計算機及相關設備制造業B&#xff0e;稀有更多相關問題【簡答題】請解釋以下名詞: 制動、緩解、實施制動作用、實施緩解作用、制動距離。【簡答題】請解釋以下名詞: 制動、緩解、實施制動作用、實施緩…

CAS原理

像synchronized這種獨占鎖屬于悲觀鎖&#xff0c;它是在假設一定會發生沖突的&#xff0c;那么加鎖恰好有用&#xff0c;除此之外&#xff0c;還有樂觀鎖&#xff0c;樂觀鎖的含義就是假設沒有發生沖突&#xff0c;那么我正好可以進行某項操作&#xff0c;如果要是發生沖突呢&a…

數據分析師的職業規劃之路

“數據分析師作為一個出現時間不長的工種&#xff0c;大數據時代下&#xff0c;成為螺絲釘還是成為龍頭&#xff0c;需要嘗試新的可能。” 數據分析師手中擁有一座寶藏。作為滴滴出行數據分析團隊的負責人&#xff0c;劉普成發現了數據分析師通往卓越的秘訣&#xff1a;視野。數…

《設計模式》3.結構型模式

點擊進入我的博客 3.1 適配器模式 適配器模式把一個類的接口變換成客戶端所期待的另一種接口&#xff0c;使得原本因接口不匹配而無法在一起工作的兩個類能夠在一起工作。 3.1.1 類的適配器結構 目標&#xff08;Target&#xff09;角色&#xff1a;這就是所期待得到的接口&…

最快的計算機操作,世界十大最快的超級計算機

最近&#xff0c;《聯邦儲備技術》雜志對全球超級計算機進行了排名&#xff0c;并從中選出了十個最快的超級計算機. 其中&#xff0c;中國有兩臺超級計算機進入了榜單&#xff0c;而“天河2號”則依靠雙精度浮點算術峰. 速度達到了每秒5490億次&#xff0c;占據了王位.這也是兩…

蘋果iOS 10.3.1修復博通Wi-Fi芯片重大安全漏洞

如果你還沒有將設備升級到 iOS 10.3.1 的話&#xff0c;那么現在是個機會了。因為不久前發布的 iOS 10.3.1&#xff0c;修復了 iPhone 中博通 Wi-Fi 芯片的一個重大安全漏洞&#xff0c;該安全漏洞可能會使在 Wi-Fi 范圍內的攻擊者在智能手機上注入并運行代碼。 Google Project…

計算機開機跳過硬盤檢查,如何設置開機跳過檢測硬盤

如何設置開機跳過檢測硬盤導讀&#xff1a;很多win用戶都想設置開機跳過檢測硬盤&#xff0c;能夠更加快速的進入系統&#xff0c;今天百分網小編給大家整理出了方法。1、系統的問題系統解決在Windows界面下&#xff0c;通過“磁盤碎片整理”程序來完成。首先啟動“CMD”鍵入“…

CLIENT系列、OFFSET系列、SCROLL系列

一、client系列 clientWidth/clientHeight 是我們設置的寬和高加上內邊距&#xff08;沒有邊框&#xff09; clientLeft/clientTop  就是我們設置的邊框值 二、offset系列 offsetWidth/offsetHeight  是我們設置的寬和高加上內邊距&#xff0c;加上邊框 offsetLeft/offs…

臺積電放大招:甩開英特爾 7nm和5nm芯片將誕生

北京時間1月20日消息&#xff0c;據科技網站AppleInsider報道&#xff0c;近幾年來臺積電的發展勢頭相當猛&#xff0c;該公司總裁兼聯合CEO劉德音(Mark Liu)在最近的投資者會議中表示&#xff0c;預計今年年末公司就將正式量產10nm晶圓。此外&#xff0c;臺積電7nm研發一如預期…

01: 實現注冊登錄功能

目錄&#xff1a;抽屜項目之js最佳實踐 01: 實現注冊登錄功能 02: 實現發布帖子功能 03: 將帖子展示到頁面、點贊 04: 層級評論 目錄&#xff1a; 1.1 顯示、隱藏 "登錄/注冊" 菜單1.2 注冊功能1.3 登錄功能1.4 獲取當前用戶數量1.1 顯示、隱藏 "登錄/注冊"…

計算機系統怎么算頁面大小,電腦網頁的設計尺寸是多少

電腦網頁的設計尺寸是多少剛入門的網頁設計師可能對電腦網頁的設計尺寸大小存在疑問&#xff0c;以下百分網小編整理的電腦網頁的設計尺寸&#xff0c;希歡迎閱讀!  對大于30W臺客戶端用戶進行測試&#xff0c;得到的測試數據如下(數據來源于網絡)&#xff1a;安全分辨率為10…

Array 的一些常用 API

unshift、push、shift、pop 這4個方法都會改變原數組unshift() 從前面添加元素&#xff0c;push() 從后面追加元素&#xff0c;返回數組長度shift() 刪除第0個元素&#xff0c;pop() 刪除最后一個元素&#xff0c;返回被刪除的元素slice 不改變原數組slice(m, n)返回原數組索引…

Ovum觀察:運營商通信PaaS發展趨勢強勁

近日在佛羅里達州奧蘭多市舉行的Genband公司Perspectives16會議上&#xff0c;一個首要議題是在通信領域應對OTT威脅。 這場會議的主旨側重于電信運營商和其他服務提供商如何應對日益嚴重的威脅&#xff0c;不過似乎這樣的討論有些晚了&#xff0c;因為許多大型運營商已經找到了…