django froms与models结合使用

下面介绍forms模块如何与后台数据库交互,把from提交过来的数据写入到后台数据库中

froms与model结合使用

1、vim modes.py中创建数据表

from django.db import models

class admin(model.Model):

gender_tuple=(

(1,‘男‘),

(2,‘女‘),

)

username = models.Char Field(max_length=50)

email = models.CharField(max_length=50)

gender = models.CharField(max_length=50,choices=gender_tuple)

#choices=gender_tuple相当html中的select方法

vim forms.py

from django import forms

from app01 import models

class AdminModelForm(forms.ModelForm):

思路:如何让ModelFrom与form建立关系

class Meta:

model = models.admin #models里的admin表

fields =(‘username‘,‘email‘) #在html页面指定显示的input字段

自定义插件属性

widgets = {

‘email‘:forms.PasswordIput((attrs={‘class‘:‘auto‘})),

}

2在setting.py中配置下数据库连接信息

DATABASES = {

‘default‘: {

‘ENGINE‘: ‘django.db.backends.mysql‘,

‘NAME‘: ‘cmdb‘,

‘USER‘:‘root‘,

‘PASSWORD‘:‘tom123‘,

‘HOST‘:‘‘,

‘PORT‘:‘‘,

}

}

3初始化数据库

python mange.py makemigrations

python mange.py syncdb

4.

views.py里面写一个生成用forms模块input标签的方法

def  index3(request):

if  request.method == ‘POST’:  #判断在html表单里面提交的方式是什么(一般是2种方式 post和get)

form  = forms.AdminModelForm(request.POST)

AdminForm是在froms.py里面的一个类,通过forms方法来调用,并赋值给form

if  forms.is_valid(): #判断是否合法,输入错误的会在前端页面提示错误信息

data = form.cleaned_data 请求通过接受该数据

form.save() #表示直接讲数据存到数据库中

else:#如果输入规则不匹配在前台显示错误信息

print form.erros.as_data()

print form.erros.as_json()

print form.erros.as_text()

print form.erros.as_ul()

常见错误信息格式

else:

form = forms.AdminModelForm() #判断如果不是post方法提交的

print fors.fields

return render_to_response(‘index3.html’,{‘model’:form})

#把结果返回给前端的index2.html,model是前端Index2.html里面的一个变量用于接受后台返回的数据,form是真实的数据

5.

<html>

<head>

<meta http-equiv="Content-Type" content="text/html"/>

<title></title>

</head>

<body>

<form action=‘/index3/‘ method=‘POST‘>

{{ model.as_table}} 已table形式展示出来

{{ model.as_ul}}  已ul形式展示出来

具体查看form父类里面的详细方法---源码

好处省代码

坏处样式不可控

<input type=‘submit‘ value=‘提交‘ />

</form>

</body>

</html>

6.别忘了配置url,即在urls.py添加url指向

时间: 2025-01-13 11:30:54

django froms与models结合使用的相关文章

Django templates and models

models templates models 如何理解models A model is the single, definitive source of information about your data. It contains the essential fields and behaviors of the data you're storing. Generally, each model maps to a single database table. The basics:

django学习之- Models笔记

1:创建数据库表 #单表# app01_user 生成的表明为 tb1class User(models.Model): name = models.CharField(max_length=32,db_index=True) # 单列创建索引 email = models.CharField(max_length=32) class Meta: # 生成的表名:tb1 #数据库中生成的表名称,默认app名称+下划线+类名 db_table='tb1' (重要) index_together={

13.Django之数据库models&amp;orm连表操作补充以及其他知识点补充(二)

一.外键关联. 假如说,现在有两张表,一张user表,这个表中存放了用户账户信息,还有一张usertype表,这张表存放了用户账户的类型. from django.db import models class UserType(models.Model): #用户类型表,虽然没有创建ID字段,但是ID字段会自动创建. type = models.CharField(max_length=32) class User(models.Model): #用户表 username = models.Ch

django ORM中models的字段以及参数

字段: AutoField(Field)         - int自增列,必须填入参数 primary_key=True     BigAutoField(AutoField)         - bigint自增列,必须填入参数 primary_key=True         注:当model中如果没有自增列,则自动会创建一个列名为id的列         from django.db import models         class UserInfo(models.Model):

Django在根据models生成数据库表时报 __init__() missing 1 required positional argument: &#39;on_delete&#39;

code: 1 #encoding=utf-8 2 from django.db import models 3 # Create your models here. 4 class BookInfo(models.Model): #创建书本信息类,继承models.Model 5 booktitle=models.CharField(max_length=20) 6 bookdata=models.DateField() 7 class HeroInfo(models.Model): #创建英

Django 使用allauth报错 RuntimeError: Model class django.contrib.sites.models.Site doesn&#39;t declare an explicit app_label and isn&#39;t in an application in INSTALLED_APPS

一:报错 RuntimeError: Model class django.contrib.sites.models.Site doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS 出现这种情况需将Django的Sites框架添加到您的应用程序中,并在您的设置中将SITE_ID设置为1即可.位置放在默认配置的后面,其他应用的前面. INSTALLED_APPS = [ 'django

Django在使用models生成数据库表时报错: __init__() missing 1 required positional argument: &#39;on_delete&#39;

Django 提供完善的模型(model)层主要用来创建和存取数据,不需要我们直接对数据库操作.Django 模型基础知识: 1.每个模型是一个 Python 类,继承 django.db.models.model 类. 2.该模型的每个属性表示一个数据库表字段. 程序代码如下: # 创建应用程序数据表模型(对应数据库的相关操作) from django.db import models # 导入models模块 class Event(models.Model): # 创建Event类,继承m

13.Django之数据库models&amp;orm初探(一)

一.使用django orm的准备操作.django 默认支持sqlite,mysql, oracle,postgresql数据库.在默认情况下django的项目中会默认使用sqlite数据库,在打开settings里有如下设置: 当我们想改为mysql数据库时,需要在settings.py中做以下修改.DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'test_db', #数据库名称'USER': 'r

Django框架——模型(models)层之ORM查询(二)

1.聚合查询 聚合函数 关键字:aggregate from django.db.models import Max,Min,Sum,Count,Avg 2.分组查询 关键字:annotate 统计每一本书的作者个数 models.Book.objects.annotate(author_num = Count('author')).values('title') 统计每一个出版社卖的最便宜的书的价格 models.Book.objects.annotate(price_min=Min('boo