首页 > 其他分享 >django_web(上)

django_web(上)

时间:2023-06-02 17:56:51浏览次数:35  
标签:web name models django forms mobile class verbose

建立数据库


from django.db import models

# Create your models here.

class Admin(models.Model):
    username=models.CharField(verbose_name='用户名',max_length=32)
    password=models.CharField(verbose_name='密码',max_length=64)


class Department(models.Model):
    title=models.CharField(verbose_name='部门名称',max_length=32)
    def __str__(self):
        return  self.title

class UserInfo(models.Model):
    name=models.CharField(verbose_name='姓名',max_length=16)
    password=models.CharField(verbose_name='密码',max_length=64)
    age=models.IntegerField(verbose_name='年龄')
    account=models.DecimalField(verbose_name='账户余额',max_digits=10,decimal_places=2,default=0)  #10位整数 2位小数 默认0
    create_time=models.DateField(verbose_name='入职时间')

    #外键 级联删除 设置空
    depart=models.ForeignKey(verbose_name='部门',to='Department',to_field='id',on_delete=models.CASCADE)
    # depart=models.ForeignKey(to='Department',to_field='id',on_delete=models.SET_NULL(),null=True,blank=True)

    gender_chocies=(
        (1,'男'),
        (2,'女'),
    )
    gender=models.SmallIntegerField(verbose_name='性别',choices=gender_chocies)



class PrettyNum(models.Model):
    mobile=models.CharField(verbose_name='手机号',max_length=11)
    price=models.IntegerField(verbose_name='价格',default=0)
    level_choices=(
        (1,'1级'),
        (2,'2级'),
        (3,'3级'),
        (4,'4级'),
    )
    level=models.SmallIntegerField(verbose_name='级别',choices=level_choices,default=2)

    status_choices=(
        (1,'已占用'),
        (2,'未使用'),
    )
    status=models.SmallIntegerField(verbose_name='状态',choices=status_choices,default=1)

md5 数据校验


import hashlib
from django.conf import settings


def md5(data_string):
    # 加盐
    obj=hashlib.md5(settings.SECRET_KEY.encode('utf-8'))
    obj.update(data_string.encode('utf-8'))
    return obj.hexdigest()

form组件


from django.shortcuts import render, redirect
from app02.utils.bootstrap import BootStrapModelForm
from django import forms
from app02 import models
from django.core.validators import RegexValidator
from django.core.exceptions import ValidationError

class UserModelForm(BootStrapModelForm):
    # 增加输入的修改条件
    # 直接重写
    name = forms.CharField(min_length=3, label='用户名')
    password = forms.CharField(min_length=6, label='密码')

    # age=forms.CharField(min_length=3,label='用户名')
    class Meta:
        model = models.UserInfo
        fields = ['name', 'password', 'age', 'account', 'create_time', 'gender', 'depart']
        # 修改css
        # widgets={
        #     'name':forms.TextInput(attrs={'class':'form-control'}),
        #     'password':forms.PasswordInput(attrs={'class':'form-control'}),
        #     'age':forms.TextInput(attrs={'class':'form-control'}),
        #     'account':forms.TextInput(attrs={'class':'form-control'}),
        #     'create_time':forms.TextInput(attrs={'class':'form-control'}),
        #     'gender':forms.TextInput(attrs={'class':'form-control'}),
        #     'depart':forms.TextInput(attrs={'class':'form-control'}),
        # }



class PrettyModelForm(BootStrapModelForm):
    # 校验方式1
    mobile=forms.CharField(
        label='手机号',
        validators=[RegexValidator(r'^1\d{10}$','手机号格式错误')],
                           )
    # # 确保手机号格式错误,[,]中写多个RegexValidator表示格式 ,不满足条件就写参数~~错误
    # # 正则表达式^表示开头 $表示结尾 \d表示整数 {10}表示10个
    class Meta:
        model = models.PrettyNum
        fields = '__all__'  # 表示所有标签
        # exclude=['level'] #表示排除level标签


    # def clean_mobile(self):
    #     txt_mobile = self.cleaned_data['mobile']
    #     if len(txt_mobile) != 11:
    #         # 格式错误时
    #         raise ValidationError('格式错误')
    #
    #     # 没有错误时
    #     return txt_mobile

    def clean_mobile(self):
        txt_mobile = self.cleaned_data['mobile']
        exists = models.PrettyNum.objects.filter(mobile=txt_mobile).exists()

        if exists:
            # 格式错误时
            raise ValidationError('号码已存在')

        # 没有错误时
        return txt_mobile


class PrettyEditModelForm(BootStrapModelForm):
    # mobile=forms.CharField(disabled=True,label='手机号')
    mobile = forms.CharField(
        label='手机号',
        validators=[RegexValidator(r'^1\d{10}$', '手机号格式错误')],
    )

    class Meta:
        model = models.PrettyNum
        fields = '__all__'  # 表示所有标签
        # exclude=['level'] #表示排除level标签

    def clean_mobile(self):
        # self.instance.pk 表示数据库中id
        txt_mobile = self.cleaned_data['mobile']
        exists = models.PrettyNum.objects.exclude(id=self.instance.pk).filter(mobile=txt_mobile).exists()

        if exists:
            # 格式错误时
            raise ValidationError('号码已存在')

        # 没有错误时
        return txt_mobile

标签:web,name,models,django,forms,mobile,class,verbose
From: https://www.cnblogs.com/tgfoven/p/17452567.html

相关文章

  • 【web 开发】PHP8中对数组操作的新变化
    自动创建元素的顺序改变在PHP8中,引用赋值时,自动创建的数组元素或者对象属性的顺序和PHP7版本相比发生了变化,下面我们通过例子来体验下变化在哪里.<?php$array=[];$array['a']=&$array['b'];$array['b']=1;echo"\n";var_dump($array);?>执行结果如下:这个结果是PHP8......
  • Web安全测试—Web应用基础
    基本构件Web应用有各种各样的形式和规模。可能是一台服务器,使用相当轻量级的脚本语言,向用户发送各种类型的报告;也可能是庞大的B2B工作流系统,每小时处理上百万条订单和发票;也可能是介于两者之间的任何形式。什么是技术栈任何Web应用中,我们都必须考虑一套技术,这......
  • WebStorm前端启动JetLinks 物联网基础平台(2.x)
    目录一、环境准备二、下载源码三、安装依赖四、修改配置五、启动项目六、访问项目一、环境准备1.降级node版本为12.22.0使用node版本管理器gnvm_苍穹之跃的博客-以管理员身份打开cmd,cd到node安装目录。2.降级npm版本为[email protected]二、下载源码jetlinks-ui-antd:......
  • How to Find Django ImageField URL
    Thissetupisworkingforme,maybeitwillhelpyou.ItisforlatestversionofDjango.ManyanswersinOSareforolderDjangoversions.URLS:fromdjango.conf.urls.staticimportstaticfromdjango.confimportsettingsurlpatterns=[#url]+static(s......
  • Django邮件发送设置
    开启126邮箱的SMTP服务,并获取到一个授权码,这个授权码只显示一次在setting中配置邮件相关的设置Shell下对邮箱做一个简单的测试可以正常收到邮件添加路由相关信息,使用userapp下的路由相关信息在views中根据建立的session中第一个用户,根据用户的一个方法email_user向该用户发送邮件......
  • 基于Grafana的WebUI添加Prometheus数据源(三)
    基于Grafana的WebUI添加Prometheus数据源(三)1、Grafana介绍1.1什么是GrafanaGrafana是一款近几年比较流行的开源数据绘图工具平台。Grafana原生支持包括但不限于InfluxDB,MySQL,OpenTSDB,PostgreSQL和Prometheus等多种数据源作为输入源数据。官方地址:https://grafana.com......
  • webrtc-streamer使用
    下载地址:https://github.com/mpromonet/webrtc-streamer/releases获取使用的所有api:webrtc-streamer的服务地址:192.168.1.8:8000查询所有api:http://192.168.1.8:8000/api/help["/api/addIceCandidate","/api/call","/api/createOffer",......
  • 在web应用中使用mybatis
    1. 实现功能:52银⾏账户转账1.1 使⽤技术:HTML + Servlet + MyBatis1.2 WEB应⽤的名称:bank2. 数据库表的设计和准备数据  523. 注意MyBatis对象作⽤域以及事务问题   573.1 MyBatis核⼼对象的作⽤域   573.1.1 SqlSessionFactoryBuilder这个类可以被实例化、使⽤......
  • C# Web大文件分片上传/多线程上传
    ​ 以ASP.NETCoreWebAPI 作后端 API ,用 Vue 构建前端页面,用 Axios 从前端访问后端 API,包括文件的上传和下载。 准备文件上传的API #region 文件上传  可以带参数        [HttpPost("upload")]        publicJsonResultuploadProject(I......
  • APP-自动化定位WEB页面元素
    APP定位浏览器这种上下文嵌套的页面时,发现有的元素是无法定位 点击上面的地球图标, 点击NATIVE_APP(原生APP下面的选项),切换到web_view选项。就是使用HTML页面。 但是这个时候会报错,记住报错信息中的版本信息,这里是86.0.4240上图的报错是指缺乏对应版本的驱动;驱动的下载......