Python-web框架-Django创建一个应用(简单的博客)详细步骤总结(二)--处理用户输入,建立表单

目录

7 处理用户输入

7.1 在模板添加HTML表单

7.2 向应用添加URLconf项

 7.3 创建视图

8 建立表单和表单模型


7 处理用户输入

接着上一篇文章的内容,应用建成之后,如何来处理用户输入的内容?

7.1 在模板添加HTML表单

在此为用户创建一个表单,修改myblog/templates/archive.html文件:

<form action="/myblog/create/" method="post">{% csrf_token %}
    <table>{{ form }}</table><br>
    Title:
    <input type= text name=title><br>
    Body:
    <textarea name=body rows=3 clos=60></textarea><br>
    <input type=submit>
</form>
<hr>

{% for post in posts %}
      <h2>{{ post.title }}</h2>
      <p>{{ post.tiemstamp }}</p>
      <p>{{ post.body }}</p>
      <hr>
{% endfor %}

启动服务器,刷新浏览器页面,同时显示了用户的输入和博文:

7.2 向应用添加URLconf项

使用上一步的html,需要用到/myblog/create/路径,创建视图函数creat_blogpost,用于把内容保存到数据库。

在/myblog/urls.py添加项:

from django.urls import re_path as url
from . import views

urlpatterns = [
      url(r'^archive$',views.archive),
      url(r'^create/',views.create_blogpost),
]

 7.3 创建视图

修改/myblog/views.py文件,添加上一步用到的函数creat_blogpost:

from django.shortcuts import render
from myblog.models import BlogPost
from django.http import HttpResponseRedirect
from datetime import datetime
from django.template import RequestContext
# Create your views here.
def archive(request):
    #post = BlogPost.objects.all()
    post = BlogPost.objects.all().order_by('-timestamp')
    return render(request,'archive.html',{'posts':post})

def create_blogpost(request):
    if request.method == 'POST':
        BlogPost(
            title=request.POST.get('title'),
            body=request.POST.get('body'),
            timestamp=datetime.now(),
        ).save()
        return HttpResponseRedirect('/myblog/archive')

此时填写表单内容,点击提交,已经可以实现添加。

8 建立表单和表单模型

为了简化接受用户数据,做如下修改

1.在myblog/models.py中添加BlogPostForm类:

from django.db import models
from django import forms

# Create your models here.

class BlogPost(models.Model):
    title = models.CharField(max_length=150) #博客的标题
    body = models.TextField()    #博客正文
    timestamp = models.DateTimeField() #博客创建时间

    class Meta:
        ordering = ('-timestamp',)

class BlogPostForm(forms.ModelForm):
    class Meta:
        model = BlogPost     #Meta类表示这个表单基于哪个模型
        exclude = ('timestamp',)    #从HTML移除这个表单项

2.使用ModelForm生成HTML

修改myblog/templates/archive.html:

<form action="/myblog/create/" method="post">{% csrf_token %}
    <table> {{ form }}</table>
    <input type= text name=title><br>
    </form>
<hr>

{% for post in posts %}
      <h2>{{ post.title }}</h2>
      <p>{{ post.tiemstamp }}</p>
      <p>{{ post.body }}</p>
      <hr>
{% endfor %}

 3.修改myblog/views.py:实现更新视图函数,实例化ModelForm并进行传递。

from django.shortcuts import render
from myblog.models import BlogPost,BlogPostForm
from django import forms
from django.http import HttpResponseRedirect
from datetime import datetime
from django.template import RequestContext
# Create your views here.
def archive(request):
    #post = BlogPost.objects.all()
    post = BlogPost.objects.all().order_by('-timestamp')
   # return render(request,'archive.html',{'posts':post})
    return render(request,'archive.html',{'posts':post,'form':BlogPostForm()})

def create_blogpost(request):
    if request.method == 'POST':
        form = BlogPostForm(request.POST)
        if form.is_valid():
            post = form.save(commit=False) #保存表单,但没有保存模型
            post.timestamp=datetime.now()
            post.save()                    #保存模型
            return HttpResponseRedirect('/myblog/archive')

 刷新浏览器,已实现:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
简易人员信息查询系统是一个基于Python Web Django框架开发的应用程序,用于管理和查询人员的基本信息,实现了人员信息的添加、查找、编辑和删除等功能。 首先,需要创建一个Django项目,并建立一个数据库模型,用于存储人员信息。数据库模型可以包含姓名、性别、年龄、电话等字段,并且为每个字段设置相应的数据类型和验证规则。 接着,通过Django表单功能,实现人员信息的添加和编辑。可以创建一个表单类,其中包含需要输入的字段,并提供相应的页面以便用户进行填写和提交。在提交表单后,可以通过表单验证和存储数据的功能将信息保存到数据库中。 之后,可以通过Django的视图功能,实现人员信息的查询和展示。可以创建一个视图函数,用于处理用户提交的查询请求。在视图函数中,可以通过输入的关键词在数据库中进行搜索,并将查询结果返回给用户。 最后,可以通过Django的模板功能,实现人员信息的展示和删除。可以创建一个模板文件,用于将查询结果以表格的形式呈现给用户,并提供删除选项。在用户选择删除时,可以通过模板中的表单提交功能,调用相应的视图函数进行删除操作。 通过以上步骤的实现,我们就可以得到一个简易的人员信息查询系统。用户可以通过该系统进行人员信息的添加、查询、编辑和删除等操作,从而实现对人员信息的有效管理。同时,Python Web Django框架的使用使得系统开发更加快速和高效。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值