zoukankan      html  css  js  c++  java
  • 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)

  • 相关阅读:
    作业呢
    留言板
    题解 lg2480 古代猪文
    题解 lg4139 上帝与集合的正确用法
    AFO
    题解 lg2946 [USACO09MAR]Cow Frisbee Team S
    题解 lg4158 [SCOI2009]粉刷匠
    题解 HDU4035 Maze
    题解 lg3232 [HNOI2013]游走
    题解 HDU4652 Dice
  • 原文地址:https://www.cnblogs.com/Neotester/p/12956570.html
Copyright © 2011-2022 走看看