标签:manage 规则 导入 except 长度 exception 默认 对象 filter
目录
python manage.py createsuperuser
username: wph
password: 123123qwe
# LANGUAGE_CODE = ‘en-us‘
LANGUAGE_CODE = ‘zh-hans‘
在app的admin.py中 导入要管理的表
from django.contrib import admin
from app01 import models
# Register your models here.
# 将app01中的表 注册到admin中,之后就能在admin页面对表管理
admin.site.register(models.Publisher)
要在管理页面显示字段的中文名称:
在字段中加入verbose_names
class Publisher(models.Model):
name = models.CharField(max_length=32, unique=True, verbose_name=‘出版社名称‘)
address = models.TextField()
显示表的中文名称,加入Meta类
class Publisher(models.Model):
name = models.CharField(max_length=32, unique=True, verbose_name=‘出版社名称‘)
address = models.TextField(verbose_name=‘出版社地址‘)
class Meta:
verbose_name = ‘出版社‘
# 显示复数会加s,需要加入如下字段;
verbose_name_plural = verbose_name
显示添加的信息为对象 Publisher object ,改为详细信息
# 在models中加入如下类
def __str__(self):
return self.name
# 在models的字段中,null=True 控制数据库可以为空,black=True 控制django admin可以为空
phone = models.CharField(max_length=11, null=True, blank=True)
内置的校验规则
1. require=True 该字段必填
2. max_length 该字段最大长度
3. min_length 该字段最小长度
from django.core.validators import RegexValidator
phone = forms.CharField(
max_length=11,
label=‘电话‘,
required=False, # 设置非必填项
widget=forms.widgets.TextInput(attrs={‘class‘: ‘form-control‘}),
validators=[RegexValidator(r‘^1[3456789]\d{9}$‘, ‘手机号码格式不正确‘)] #自定义校验规则
)
from django.core.exceptions import ValidationError
def phone_validate(value):
# 拿用户天界的手机号去数据库匹配查找
is_exist = models.Book.objects.filter(phone=value)
if is_exist:
raise ValidationError(‘该手机号已经注册‘)
else:
return value
# 使用自定义校验
phone = forms.CharField(
max_length=11,
label=‘电话‘,
required=False, # 设置非必填项
widget=forms.widgets.TextInput(attrs={‘class‘: ‘form-control‘}),
validators=[RegexValidator(r‘^1[3456789]\d{9}$‘, ‘手机号码格式不正确‘), phone_validate] # 自定义校验规则
)
class BookForm(forms.Form):
def a
pass
# 自定义一个局部钩子函数
def clean_title(self):
value = self.cleaned_data.get(‘title‘)
if ‘jpm‘ in value:
raise ValidationError(‘jpm已被河蟹‘)
class BookForm(forms.Form):
def foo():
pass
# 全局钩子
def clean(self):
self.cleaned_data # 可以去到所有字段数据 可以用来判断二次确认密码是否争取
self.add_error(‘字段‘, ‘两次输入密码不一致‘)
pass
def edit_book(request, pk):
book_obj = models.Book.objects.filter(id=pk).first()
book_dict = model_to_dict(book_obj) # 把一个对象快速转换成字典
book_dict[‘publish_date‘] = book_obj.publish_date.strftime(‘%Y-%m-%d‘)
form_obj = BookForm(book_dict) ## 给form实例传一个字典,设置默认值
标签:manage 规则 导入 except 长度 exception 默认 对象 filter
原文地址:https://www.cnblogs.com/wangph/p/9551696.html