一般网站是怎么做的,张梅 合肥网站建设,建工信息网,西安做网站的价格接着上节继续学习#xff0c;本章将建立用户账户 Web应用程序的核心是让任何用户都能够注册账户并能够使用它#xff0c;不管用户身处何方。在本章中#xff0c;你将创建一些表单#xff0c;让用户能够添加主题和条目#xff0c;以及编辑既有的条目。你还将学习Django如何…接着上节继续学习本章将建立用户账户 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_namelearning_logs
urlpatterns[#主页url(r^$,views.index,nameindex),#显示所有主题,url(r^topics/$,views.topics,nametopics),#特定主题的详细页面url(r^topics/(?Ptopic_id\d),views.topic,nametopic),#用于添加新主题的网页url(r^new_topic/$,views.new_topic,namenew_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):显示单个主题以及所有的条目topicTopic.objects.get(idtopic_id)entriestopic.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 %}
pAdd a new topic:/pform action{% url learning_logs:new_topic %} methodpost{% csrf_token %}{{ form.as_p }}button namesubmitadd topic/button
/form
{% endblock content %}1.5 链接到页面new_topic {% extends learning_logs/base.html %}
{% block content %}
pTopics/p
ul{% for topic in topics %}lia href{% url learning_logs:topic topic.id %}{{ topic }}/a/li{% empty %}liNo 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