日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python 项目实践三(Web应用程序)第四篇

發布時間:2023/12/9 python 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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

總結

以上是生活随笔為你收集整理的Python 项目实践三(Web应用程序)第四篇的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。