自定义_自定义view - CSDN
精华内容
参与话题
  • Django默认的认证后端是判断用户的...1.自定义认证后端 我们新建一个py文件,里面写一个类继承ModelBackend,并且重写authenticate()方法 from django.contrib.auth.backends import ModelBackend import re from .

    Django默认的认证后端是判断用户的username和password这两个字段是否通过校验,但实际上,我们可能会有更多的登录需求,比如说,既可以通过用户名,也可以通过手机号或邮箱等登录,这时候我们可以重写authenticate()方法实现

    1.自定义认证后端

    我们新建一个py文件,里面写一个类继承ModelBackend,并且重写authenticate()方法

    from django.contrib.auth.backends import ModelBackend
    import re
    from .models import User
    
    class UsernameMobileAuthBackend(ModelBackend):
        def authenticate(self, request, username=None, password=None, **kwargs):
            try:
                # 先按用户名查找
                user = User.objects.get(
                    # username=="18588269037" or mobile=="18588269037"
                    Q(username=username) |  Q(mobile=username) | Q(email=username)
                )
            except User.DoesNotExist as e:
                return None
            # 如果用户存在再校验密码
            if user.check_password(password):
                return user
    
    

    2.配置文件

    完成自定义的认证后端之后,我们还需要在配置文件里告诉Django要使用我们自定义的而不是默认的认证后端

    AUTHENTICATION_BACKENDS = ['apps.users.utils.UsernameMobileAuthBackend']
    

    其他类似链接
    【Django】创建用户,继承AbstractUser自定义用户模型类
    【Django】自定义存储后端返回完整图片的URL链接

    展开全文
  • python导包的几种方法 自定义包的生成以及导入详解

    万次阅读 多人点赞 2018-09-06 13:50:19
    导入python包的普通方法 python是一门灵活的语言,也可以说python是一门胶水语言,顾名思义,就是其可以导入各类的包,python的包可以说是所有语言中最多的。当然导入包大部分是为了更快捷,更方便,效率更高。...

    python是一门灵活的语言,也可以说python是一门胶水语言,顾名思义,就是其可以导入各类的包,python的包可以说是所有语言中最多的。当然导入包大部分是为了更快捷,更方便,效率更高。对于刚入门的python爱好者来说最初接触的应该是import直接导入包的方式,例如 import time,就是导入了python的time包,这个包中的方法可以处理大部分我们项目中遇到的关于时间的问题。
    下面我会详细介绍几种导入包的方式(在开发过程中绝对够用)以及怎样把其他文件夹中的python模块生成我们可以应用的包。

    1.import 常规导入,直接导入整个包的所有的功能函数。

    例如:import time, 用import直接导入 python的time模块。
    import导入time模块

    2.import多个导入,导入多个包的所有功能函数。

    这里写图片描述

    3.from … import …导入整个包的部分功能函数。

    第一个导入的是:导入random模块(包)的randint函数。
    第二个导入的是:导入time模块(包)的time以及localtime函数,中间用,隔开。
    这里写图片描述

    4.当然也可以通过from … import * 这个也是直接导入包的所有功能。相当于import …

    这里写图片描述

    5.重要的,在实际的应用中用得也是比较多的,我们自定义我们自己写的功能包。

    下面说的详细一点。
    首先在任意路径创建一个文件夹,来放我们自定义的包的文件。
    我的是创建在/home/xyh/test_package,下边是我的目录结构。要在另一个不相关的文件夹下的python应用中引用到我们自定义的包。就是在/home/xyh/test_package2/use_lucky_package.py中导入lucky_package.py这个包,测试直接import lucky_package.py或者直接from test_package import lucky_package.py是不行的。
    这里写图片描述
    直接导入,出现程序运行错误提示信息:
    这里写图片描述

    要想成功导入需要做的两步:

    • 第一:在test_package文件夹中创建_init_.py文件,里边什么都不需要编辑。
    • 第二:在代码中把test_package的文件的路径加入到python解释器可以搜索到的路径列表中,这里就用到了python的包sys模块。
      下边是运行过一次的目录结构:pyc文件是py文件编译后生成的字节码文件,不需要自己创建,在你第一次成功导入包并运行成功之后会自动生成。
      这里写图片描述

    下面附上lucky_package.py(包程序)以及use_lucky_package.py(引用包程序)的简单源码:

    • lucky_package.py
    #_*_coding:utf-8_*_
    # 导入random模块,我们要制作的包要用
    import random
    
    # 定义自定义包模块的简单功能
    def test():
        print(random.randint(1,10))
        return('hello world')
    
    • use_lucky_package.py
    #_*_coding:utf-8_*_
    import sys
    
    # 动态添加test_package文件夹的路径,为了能让此文件夹下的
    # 自定义包成功的导入
    # 要根据你自己的实际包的模块来决定路径。
    sys.path.append('../')
    
    # 打印所有python解释器可以搜索到的所有路径
    print(sys.path)
    
    # 导入自定义包
    from test_package.lucky_package import *
    
    # 输出lucky_package中test函数的结果:
    result = test()
    print(result)
    运行以上代码结果:

    这里写图片描述

    其实对于不经常使用python的使用者来说,导入模块可能是个很头疼的事情,他们并不知道python的导入包的机制其实是非常灵活的,当你大概知道了python解释器是怎样去查找并引用这些包的时候,那么你写的所有程序功能都可以作为包来供你调用,只要你开心。希望通过本篇文章能够帮助解决在python使用中因为导包而带来的困扰。
    展开全文
  • 自定义标签的使用(总结)

    千次阅读 2018-11-11 16:04:49
    一、最简单的自定义标签() 1、编写继承SimpleTagSupport public class MyTag extends SimpleTagSupport { @Override public void doTag() throws JspException, IOException { getJspC...

    引入jstl.jar、standard.jar

    一、最简单的自定义标签()

    1、编写继承SimpleTagSupport

    public class MyTag extends SimpleTagSupport {
    
        @Override
        public void doTag() throws JspException, IOException {
            getJspContext().getOut().write("hello walker");
        }
    }

    2、表现tld文件,放在WEB-INF下

    <taglib xmlns="http://java.sun.com/xml/ns/j2ee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
        version="2.0">
        <description>A tag library exercising SimpleTag handlers.</description>
        <tlib-version>1.0</tlib-version>
        <short-name>SimpleTagLibrary</short-name>
        <uri>mytid</uri>
    
        <tag>
            <description>Outputs a colored tile</description>
            <name>hello</name>
            <tag-class>Test.MyTag</tag-class>
            <body-content>empty</body-content>
        </tag>
    
    </taglib>

    注:属性说明

    • description //描述信息
    • tlib-version //指定标签库的版本号,基本不用我们操心
    • short-name //指定标签库的短名字,也是没什么用
    • uri //这是一个重要的子元素,是该标签库的唯一标识
    • tag //看名字就知道,这是定义标签的子元素,很重要 

       tag标签的属性说明

    • description //描述信息
    • name //该标签的唯一标识,很重要
    • tag-class //指定了处理该标签的类,也就是使用该标签谁给我返回结果
    • body-content //标签体,后面详说,很重要
    • attribute //属性,后面介绍,很重要

    3、调用

    <%@taglib uri="mytid" prefix="SimpleTagLibrary" %>  

    <mytags:hello />

     

    二、带属性的自定义标签

      1、自定义标签类的编写

    public class MyTag extends SimpleTagSupport {
    
        private String map;
        public String getMap(){
            return this.map;
        }
        public void setMap(String map){
            this.map = map;
        }
        @Override
        public void doTag() throws JspException, IOException {
            HashMap<String,Integer> maps = (HashMap<String,Integer>)(getJspContext().getAttribute(map));
            Object[] array = maps.keySet().toArray();
    
            for (String str : maps.keySet()){
                getJspContext().getOut().write("<tr>");
                getJspContext().getOut().write("<td>");
                getJspContext().getOut().write(str);
                getJspContext().getOut().write("</td>");
                getJspContext().getOut().write("<td>");
                getJspContext().getOut().write(""+maps.get(str));
                getJspContext().getOut().write("</td>");
                getJspContext().getOut().write("</tr>");
            }
        }
    }

    2、tld

     

    <taglib xmlns="http://java.sun.com/xml/ns/j2ee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
        version="2.0">
        <description>A tag library exercising SimpleTag handlers.</description>
        <tlib-version>1.0</tlib-version>
        <short-name>SimpleTagLibrary</short-name>
        <uri>mytid</uri>
    
        <tag>
            <description>Outputs a colored tile</description>
            <name>hello</name>
            <tag-class>Test.MyTag</tag-class>
            <body-content>empty</body-content>
            <attribute>
                <name>map</name>
                <required>true</required>
                <fragment>true</fragment>
            </attribute>
        </tag>
    
    </taglib>

    注:

    required:该属性是否必须

    rtexprvalue:当前属性是否可接受运行时表达式的动态值

    3、使用

    <%
        HashMap<String,Integer> maps = new HashMap<String, Integer>();
        maps.put("李四",53);
        maps.put("张三",23);
        maps.put("walker",22);
        pageContext.setAttribute("map",maps);
      %>
          <table>
            <mytag:hello map="map"/>
          </table>

     

    三、带标签体自定标签

     1、自定义标签类

    /**
     * 带标签体的标签
     * @author Administrator
     *
     */
    public class IteratorTag extends SimpleTagSupport{
        //标签属性,省去getter,setter
        private String collection;
        private String item;
    
        @Override
        public void doTag() throws JspException, IOException {
            //从page scope中获取属性名为collection的集合
            Collection itemList=(Collection) getJspContext().getAttribute(collection);
            //遍历集合
            for (Object object : itemList) {
                //将集合的元素设置到page范围
                getJspContext().setAttribute(item,object);
                //输出标签体
                getJspBody().invoke(null);
            }
        }
    }
    

    2、tld

    <description>A tag library exercising SimpleTag handlers.</description>
        <tlib-version>1.0</tlib-version>
        <short-name>myTaglib</short-name>
        <uri>http://www.chinaebi.org/myTaglib</uri>
        <tag>
            <name>iterator</name>
            <tag-class>com.chinaebi.test.IteratorTag</tag-class>
            <body-content>scriptless</body-content>
            <attribute>
                <name>collection</name>
                <required>true</required>
                <fragment>true</fragment>
            </attribute>
            <attribute>
                <name>item</name>
                <required>true</required>
                <fragment>true</fragment>
            </attribute>
        </tag>

    注:body-content说明

    • tagdependent:指定标签处理类自己负责处理标签体。
    • empty:指定该标签只能作用空标签使用。
    • scriptless:指定该标签的标签体可以是静态 HTML 元素,表达式语言,但不允许出现 JSP 脚本。
    • JSP:指定该标签的标签体可以使用 JSP 脚本。

    3、使用

    <%
        List list= new ArrayList();
        list.add("java");
        list.add("c++");
        list.add("php");
        pageContext.setAttribute("list",list);
        %>
        <table border="1" cellpadding="0" cellspacing="0">
        <myTag:iterator item="item" collection="list">
            <tr>
                <td>${item}</td>
            </tr>
        </myTag:iterator>
        </table>
    

     

    展开全文
  • 硬核!教你三种方法,实现微信自定义修改地区!

    万次阅读 热门讨论 2019-05-14 09:25:34
    前几天,有小伙伴问怎样自定义修改微信地区?当时说的第二天分享,结果在录制第二种方法的时候,突发意外,出现“微信以停止运行”的状况,明明早上还好好的,怎么就打不开了呢?也木有做任何操作啊!所以当天就没有...

    前几天,有小伙伴问怎样自定义修改微信地区?当时说的第二天分享,结果在录制第二种方法的时候,突发意外,出现“微信以停止运行”的状况,明明早上还好好的,怎么就打不开了呢?也木有做任何操作啊!所以当天就没有录制完成,不过终于找到了问题,太极在vivo应用商店自动更新啦!如果你的手机也是vivo手机请在各大应用商店设置中将自动更新关闭或者忽略更新!

    接下来,进入今天的正题,这次我们分享了几种方法,大家可以根据自己的情况选择,文末有彩蛋哦!

    微信自定义地区多种方法_公众号封面首图_2019.04.24.png

    一、安卓手机第一种方法:Xposed框架+微X模块

    1、Xposed框架是安卓手机的一大神器,但是,要想使用Xposed框架手机需要解锁、刷机、Root...操作比较麻烦,而且风险较大,不建议新手使用。如果你是魅族手机,可以查看我们的历史文章《魅族手机获取root权限、安装Xposed框架的方法!》。其他手机可以在各大手机论坛(小米手机MIUI论坛、魅族手机魅族社区...)搜索相关的经验贴进行刷机操作!再次提醒:刷机有风险。请提前备份数据!

    Xposed框架安装成功以后,请不要随意升级防止死机或者功能失效等。不同版本的Xposed框架安装成功以后激活界面不同(一般来说,绿字表示激活成功,红字表示未激活)。

    3.jpg

    4.jpg

    2、Xposed框架安装成功以后,我们需要安装微X模块,微X模块安装成功以后,需要在Xposed框架中“模块管理”勾选重启才可以生效。

    以上所有设置完成以后,我们打开微信设置,选择“微X模块”,选择“其他”,然后选择“添加自定义地区”,点击右上角“添加”输入任意名称即可。

    5.gif

    3、添加自定义地区成功以后,我们返回到个人信息界面,点击“更多”,选择“地区”,这时候刚才添加的地区就会出现在这里了,我们选择就Ok啦!

    6.gif

    二、安卓手机第二种方法:太极+微X模块

    1、与第一种方法相比,不需要解锁、刷机、root等。简单又安全。首先,我们需要安装太极APP,和所有普通APP安装一样,一步一步按照提示来就可以了,vivo、oppo各大手机安装过程中引导程序有使用用户习惯误导用户点击的情况,一定要看清楚再去点击确定。不知道怎么安装的用户可以查看我们以前的文章《黑科技!免解锁免刷机免Root直接使用Xposed模块!功能强大!》。

    太极安装成功以后,我们点击右下角“创建应用”选择“微信”然后点击底部“创建”创建应用,创建过程时间比较长,请在闲暇时间操作(创建应用会卸载原来的应用如有需要请备份好数据)。应用创建成功以后我们点击右下角“下载模块”,找到“微X模块”下载安装,然后再在“模块管理”中勾选重启手机。

    7.jpg

    2、后面的操作和第一种方法以后,都是通过微X模块修改!不再赘述!

    8.jpg

    三、通用方法:“云端软件”

    1、第三种方法就是使用所谓的“云端软件”登录修改。所谓的“云端软件”利用的是iPad协议在服务器登录,这里扩展了更多的功能。

    11.jpg

    2、登录成功以后,我们在好友列表找到本号(自己)根据提示发送指令就可以看到很多功能。如:我使用的云端软件提示是112。然后根据指令去修改自定义地区,如“112#极客研习社”!搞定~

    13.jpg

    由于“云端软件”是收费软件,为了防止误解,我一直都没有分享,最近有苹果用户问我,所以还是分享一下。知道有这么中方法或者途径,不需要的请忽略就可以。

    除了以上三种方法,还可以通过微信第三方软件修改,这些软件微商使用较多,而且软件均需要付费,但是功能很多,也可以达到修改地区的目的!在这里,只是想要告诉大家有这种途径或者方法,我也不做这个,所以不用找我。

    最后,今天的彩蛋来了!想要修改地区又不想要花钱的小伙伴,如果相信我的话,可以找我,我帮你登录到我的安卓手机帮你免费修改,只需要1-2分钟,修改完成以后你可以重新设置一下密码,在设置中删除登录设备就可以!如果不信任的话,那就算了!每天事情比较多,请耐心等待!

    今天的分享就到这里!

    展开全文
  • HTML自定义列表

    千次阅读 2019-06-02 11:37:38
    HTML的自定义列表 <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta ...
  • Vue - 自定义组件

    万次阅读 2018-09-27 09:23:18
    这篇文章介绍Vue的自定义组件。定义全局组件的第一种方式: html代码:定义全局组件的第二种方式: html代码:定义全局组件的第三种方式: html代码: 常用的方式是第三种,原因: (1)在工作中模板中肯定有很多...
  • 自定义字段的设计与实现(Java实用版)

    万次阅读 多人点赞 2017-08-14 19:01:02
    自定义字段又叫做“开放模型”,用户可以根据自已的需求,添加需要的字段,实现个性化定制。 如现有一套CRM系统,客户模块中客户信息,需要实现不同行业,不同业态都可以个性化需求。那我们知道客户信息表T_CUSTOM,...
  • 自定义注解详细介绍

    万次阅读 多人点赞 2019-06-15 01:46:39
    1 注解的概念 1.1 注解的官方定义 首先看看官方对注解的描述: An annotation is a form of metadata, that can be added to Java source code. Classes, methods, variables, parameters and ...
  • C#开发之自定义控件的简单使用

    万次阅读 2012-10-12 10:34:27
    1.开发自定义控件 自定义控件在开发中算常用的技术,因为在解决实际问题时往往.NET Framework提供的控件不能满足所有的需求,还好可以根据.NET Framework提供的基础控件组合扩展成自定义控件。 开发自定义控件需要...
  • 用matlab实现自定义函数的数据拟合

    万次阅读 2016-08-02 08:47:53
    matlab版本以及问题数据介绍 本人使用的matlab为2012b,数据见下图 实现过程输入数据 打开Curve Fiting Tools 位于apps第一个工具 设置变量并输入自定义函数 输出结果 左侧为数据参数,右侧为拟合图像。
  • 一、添加自定义事件通过jQuery的bind()或者on()方法 添加自定义事件如下代码 自定义了一个mychange事件$("#postionId").on("mychange",function () { console.log(11); validForm.check...
  • react给组件,元素设置自定义属性

    万次阅读 2020-06-19 10:31:44
    给元素或者组件设置自定义属性一般以‘data-’开头,后面的可以取个独特的名字,比如说我想给img表情加一个自定义的id属性,那么react可以写成如下的样式: <div> <div onClick={(event) => { alert...
  • 设置自定义电脑屏幕分辨率

    千次阅读 2019-01-18 15:04:16
    主机对应的最大电脑屏幕分辨率是16001200,需,19201080的屏幕分辨率才可以显示正常,以下步骤可以实现: ...(2)打开显示器一栏 (3)自定义分辨率那里点击创建,就可以对属性进行编辑,保存之后就可以了 ...
  • 学习如何自定义异常并且使用自定义异常
  • Javascript实现自定义弹出输入框

    万次阅读 2017-09-03 17:38:08
    1、可拖拽弹出输入框(不支持IE浏览器) 下载地址:http://download.csdn.net/download/zhaodecang/9962297 2、可拖拽弹出对话框(完美支持IE浏览器) 下载地址:...
  • 在上篇文章实现微信扫码获取带指定参数时,微信公众号后台启用了服务器配置,导致之前设置好的微信自定义菜单失效。 开启了服务器配置,就无法用之前的方式在微信公众平台配置自定义菜单 此时,我们要通过接口来...
  • IDEA自定义格式化

    万次阅读 2015-12-30 18:33:43
    在C盘下找到 C:\Users\Administrator\.IntelliJIdea14\config 在 config下新建一个codestyles目录 然后把你要导入的代码格式文件复制进去 然后重启你的 IDEA 就可以看到新导入的代码格式了!...
  • Office2019、Office365自定义安装

    万次阅读 2020-03-13 18:13:17
    本文已迁移至:https://www.cnblogs.com/coco56/p/12482323.html
  • 每个公司都有一套自己的下拉样式这个时候就需要我们完全自定义RecyclerView的下拉刷新,基本查阅了网上所有的下拉刷新,但是效果都不怎么样.个人感觉我写的这个下拉刷新效果方面绝对的66666,欢迎可以提出一些改进意见:...
  • Android自定义弹出框实现(修改版)完整实例源码

    千次下载 热门讨论 2020-07-28 23:32:37
    android自定义弹出框的实现。 平时做项目时,感觉android自带的弹出框样式比较丑,很多应用都是自己做的弹出框,这里也试着自己做了一个。
1 2 3 4 5 ... 20
收藏数 2,703,587
精华内容 1,081,434
关键字:

自定义