Python 【第十三章】 Django 之 FORM

不涉及数据库存储数据例一 :FORM  实现页面下拉选择框:

url.py

from django.conf.urls import url
from django.contrib import admin
from app01 import views

urlpatterns = [
    # url(r‘^admin/‘, admin.site.urls),
    url(r‘^index/‘,views.index),
]

views.py

from django.shortcuts import render
from django.shortcuts import HttpResponse
from app01 import models
from django import forms

class Indexform(forms.Form):
    c = {
        (1,‘CEO‘),
        (2,‘COO‘)
    }
    user_type_id = forms.IntegerField(widget=forms.Select(choices=c))

def index(request):
    form = Indexform()
    return render(request,‘index.html‘,{‘form‘:form})

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<h1>index</h1>
{{ form.user_type_id }}

</body>
</html>

涉及数据库存储数据例二:通过models.py 一对一外表关联方式来实现

models.py

from django.db import models

# Create your models here.

class UserType(models.Model):
    caption = models.CharField(max_length=16)

class UserInfo(models.Model):
    user = models.CharField(max_length=32)
    pwd = models.CharField(max_length=32)
    user_type = models.ForeignKey(‘UserType‘)

创建数据库表执行以下两个语句:

python manage.py makemigrations
python manage.py migrate 

views.py  通过循环来生成数据

from django.shortcuts import render
# from django.shortcuts import HttpResponse
from app01 import models
from django import forms

class Indexform(forms.Form):
    # c = {
    #     (1,‘CEO‘),
    #     (2,‘COO‘)
    # }
    c = models.UserType.objects.all().values_list(‘id‘,‘caption‘)
    user_type_id = forms.IntegerField(widget=forms.Select(choices=c))

def index(request):
    for i in range(10):
        models.UserType.objects.create(caption=‘CE‘+str(i))
    c = models.UserType.objects.all().count()
    print(c)
    form = Indexform()
    return render(request,‘index.html‘,{‘form‘:form})

生成 数据后,修改viiews.py

from django.shortcuts import render
# from django.shortcuts import HttpResponse
from app01 import models
from django import forms

class Indexform(forms.Form):
    # c = {
    #     (1,‘CEO‘),
    #     (2,‘COO‘)
    # }
    c = models.UserType.objects.all().values_list(‘id‘,‘caption‘)
    user_type_id = forms.IntegerField(widget=forms.Select(choices=c))

def index(request):
    # for i in range(10):
    #     models.UserType.objects.create(caption=‘CE‘+str(i))
    # c = models.UserType.objects.all().count()
    # print(c)
    form = Indexform()
    return render(request,‘index.html‘,{‘form‘:form})

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<h1>index</h1>
{{ form.user_type_id }}

</body>
</html>

遇到问题,如果在数据库中继续添加新数据,会出现页面没有显示 新数据,如果显示 ,需要重启django

以下方法是解决上述问题

时间: 2024-08-01 10:41:23

Python 【第十三章】 Django 之 FORM的相关文章

那些年被我坑过的Python——第十三章:一夫当关(设计堡垒机)

  堡垒机架构 堡垒机的主要作用权限控制和用户行为审计,堡垒机就像一个城堡的大门,城堡里的所有建筑就是你不同的业务系统 , 每个想进入城堡的人都必须经过城堡大门并经过大门守卫的授权,每个进入城堡的人必须且只能严格按守卫的分配进入指定的建筑,且每个建筑物还有自己的权限访 问控制,不同级别的人可以到建筑物里不同楼层的访问级别也是不一样的.还有就是,每个进入城堡的人的所有行为和足迹都会被严格的监控和纪录下来,一旦发生 犯罪事件,城堡管理人员就可以通过这些监控纪录来追踪责任人. 堡垒要想成功完全记到他的

python第十三章

堡垒机前戏 开发堡垒机之前,先来学习Python的paramiko模块,该模块机遇SSH用于连接远程服务器并执行相关操作 SSHClient 用于连接远程服务器并执行基本命令 基于用户名密码连接: + ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 import paramiko # 创建SSH对象 ssh = paramiko.SSHClient() # 允许连接不在know_hosts文件中的主机 ssh.set_missing_host_key_polic

Python之路【第二十一篇】:Django之Form组件

Django之Form组件 Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 小试牛刀 1.创建Form类 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 from django.forms import Form from django.forms import widgets from django.forms imp

流畅python学习笔记:第十三章:重载运算符__add__,__iadd__,__radd__,__mul__,__rmul__,__neg__,__eq__,__invert__,__pos__

在前面第十章以及第一章的时候介绍了Vector对象的运算符重载.第十三章专门介绍运算符重载.这里我们看几个之前没讲过的运算符__neg__,__pos__,__invert__ class Vector(object):     def __init__(self,x):         self.x=x     def __neg__(self):         return "Vector(%d)" % (-self.x)     def __str__(self):      

【Python之路】第二十三篇--Django【进阶篇】

文件配置 1.模版Templates文件配置: TEMPLATE_DIRS = ( os.path.join(BASE_DIR,'templates'), ) 2.静态文件static配置: STATICFILES_DIRS = ( os.path.join(BASE_DIR,'static'), ) Q搜索示例 1.利用Q的特性,设计多条件搜索. con = Q() q1 = Q() q1.connector = 'OR' q1.children.append(('id', 1)) q1.ch

第二章 Django之python安装(1)

Python 安装 Django 由百分百的纯 Python 代码编写而成,因此必须在系统中安装 Python .Django 需要 2.3 或更高版本的 Python.如果使用的是 Linux 或 Mac OS X ,系统可能已经预装了 Python.在命令提示符下(或OS X的终端中)输入 python,如果看到 如下信息,说明 Python 已经装好了:  小编使用的是python3.6.4版本. 不然,如果看见类似 "command not found" 的错误,你就不得不下载

Python开发入门与实战7-Django Form

7. Django Form 7.1. Form表单 Django带有一个form库,称为django.forms,这个库可以处理上一章提到的包括HTML表单的自动生成以及数据验证. 我们在inventory目录下增加forms.py文件,与models.py文件类似,专门用来存储form类. class ItemForm(forms.Form): ItemCode = forms.CharField() ItemName = forms.CharField() Remark = froms.C

Django之Form组件

Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 小试牛刀 1.创建Form类 from django.forms import Form from django.forms import widgets from django.forms import fields class MyForm(Form): user = fields.CharField( widget=widgets.Tex

django之form表单验证

django中的Form一般有两种功能: 输入html 验证用户输入 #!/usr/bin/env python # -*- coding:utf-8 -*- import re from django import forms from django.core.exceptions import ValidationError def mobile_validate(value): mobile_re = re.compile(r'^(13[0-9]|15[012356789]|17[678]

Django--分页器(paginator)、Django的用户认证、Django的FORM表单

分页器(paginator) >>> from django.core.paginator import Paginator >>> objects = ['john', 'paul', 'george', 'ringo'] >>> p = Paginator(objects, 2) >>> p.count #数据总数 4 >>> p.num_pages #总页数 2 >>> type(p.page