• django入门系列 -表单视图


    今天学习表单视图,开发一个表单提交页面

    首先定义表单类:

    在APP里面新建一个forms.py 文件

    定义一张表单类:

    from django.forms import ModelForm
    from sales.models import Momtent



    class MomentForm(ModelForm):
    class Meta:
    model =Momtent
    fields = '__all__'


    修改模型类:

    为了用户能在视图中可以枚举选择,

    from __future__ import unicode_literals
    from django.db import models


    #新增元祖用于设置消息类型枚举项
    KIND_CHOICES =(
    ('Python技术','Python技术'),
    ('数据库技术','数据库技术'),
    ('经济学','经济学'),
    ('文体资讯','文体资讯'),
    ('个人心情','个人心情'),
    ('其他','其他'),
    )

    class Momtent(models.Model):
    content =models.CharField(max_length=300)
    user_name = models.CharField(max_length=20,default='匿名')
    kind = models.CharField(max_length=20,choices=KIND_CHOICES,
    default=KIND_CHOICES[0])

     开发模板文件

    <!DOCTYPE html>
    <html>
    <head>
    <title>消息录入页面</title>
    </head>
    <body>
    <form action="?" method="post">
    <fieldset>
    <legend>请输入并提交</legend>
    {{ form.as_p }}
    <input type="submit"value="submit" />
    </fieldset>
    </form>
    </body>
    </html>

    开发视图:
    在views.py 中
    import os

    from django.shortcuts import render
    from django.http import HttpResponse
    from sales.forms import MomentForm
    from django.http import HttpResponseRedirect
    from django.urls import reverse # django3.0 中 reverse 在django.urls 里面
    def listorders(request):
    return HttpResponse("下面是系统中所有的订单信息。。。")
    def welcome(request):
    return HttpResponse("<h1>Welcome</h1>")
    def moments_input(request):
    if request.method =="POST":
    form = MomentForm(request.POST)
    if form.is_valid():
    moment = form.save()
    moment.save()
    #重定向到指定的url
    return HttpResponseRedirect(reverse('sales:welcome'))
    else:
    form = MomentForm()
    PROJECT_ROOT =os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    return render(request,os.path.join(PROJECT_ROOT,'sales/templates',"moment_input.html"),{'form':form})

    定义url 指向
    项目里面的urls.py
    urlpatterns = [
    path('admin/', admin.site.urls),
    #凡是以sales 开头的,会路由到sales里面的url里面
    path('sales/',include('sales.urls',namespace='sales')),
    path('mgr/',include('mgr.urls')),
    ]
    app应用里面的urls.py
    from django.urls import path

    from . import views

    urlpatterns = [
    path('orders/', views.listorders),
    path('moments_input',views.moments_input),
    path('',views.welcome,name='welcome'),
    ]
    app_name='sales'


    注意:这里有一个坑
    django3.0 不在APP 的urls.py里面指定app_name,会提示,应用没有注册命名空间('xxxx' is not a registered namespace)

  • 相关阅读:
    业余草 SpringCloud教程 | 第十一篇: 断路器监控(Hystrix Dashboard)(Finchley版本)
    业余草 SpringCloud教程 | 第十篇: 高可用的服务注册中心(Finchley版本)
    业余草 SpringCloud教程 | 第九篇: 服务链路追踪(Spring Cloud Sleuth)(Finchley版本)
    业余草 SpringCloud教程 | 第八篇: 消息总线(Spring Cloud Bus)(Finchley版本)
    业余草 SpringCloud教程 | 第七篇: 高可用的分布式配置中心(Spring Cloud Config)(Finchley版本)
    POJ2135 Farm Tour
    POJ1149 PIGS
    POJ3041 Asteroids
    2020.7.4模拟 数据结构 (ds)
    2020.7.4模拟 浇花 (flower)
  • 原文地址:https://www.cnblogs.com/Neotester/p/12956570.html
Copyright © 2020-2023  润新知