zoukankan      html  css  js  c++  java
  • Django学习3

    自定义过滤器和标签

    自定义过滤器(@register.filter)

    1.app应用文件夹中创建一个templatetags文件夹(必须是这个名字!)
    2.templatetags文件夹中创建一个py文件
    3.py文件中:
        from django import template
        
        # 注册标签和过滤器,固定名字register!
        register = template.Library()
    
        # @register.filter
        # def eat(v1):   # 不带参数的
        #     s = v1 + '在吃饭'
        #     return s
    
        @register.filter
        def eat(v1,v2):  # 带参数的
            s = v1 + v2
            return s
     
    4.在要渲染的html模板中:
        {% load py文件名 %}
        {#{{ s1|eat }}#}
        {{ s1|eat:'幸福的生活在一起' }}		# 之后和使用内置的方法一致  {{ }}
     
    5.过滤器最多两个参数!
            
    

    自定义标签(@register.simple_tag)

    1.app应用文件夹中创建一个templatetags文件夹(必须是这个名字!)
    2.templatetags文件夹中创建一个py文件
    3.py文件中:
    	from django import template
        
        register = template.Library()
    
        @register.simple_tag
        def mytag(v1,v2,v3):       # 带多个参数
            s = v1 + '在鹊桥' + v2 + v3
            return s
    
    4.在要渲染的html模板中:
        {% load py文件名 %}
        <div>
            {% mytag s1 '一年相见' '一次' %}   # 自定义的标签+对应的参数 (得到mytag的返回值) {% %}
        </div>
    
    5.可传多个参数
    
    

    自定义标签inclusion_tag(@register.inclusion_tag('xx.html'))

    1.app应用文件夹中创建一个templatetags文件夹(必须是这个名字!)
    2.templatetags文件夹中创建一个py文件
    3.py文件中:
        from django import template
    
        register = template.Library()
        
        @register.inclusion_tag('inctag.html')  # 这里传一个html文件,会将return的字典中的变量data传到该html文件中
        def inctag():
            return {'data':[11,22,33]}
    
    4. 传入的inctag.html:	# 接收到变量data并进行模板渲染
          <ul>
            {% for i in data %}
                <li>{{ i }}</li>
            {% endfor %}
          </ul>
        
    5.在使用inclusion_tag的html页面:
        {% load py文件名 %}
        {% inctag %}   # 直接写inclusion_tag标签名即可,先前渲染过数据的inctag.html就会作为组件导入进来
        
    6.可以传任意参数
    
    小结:inclusion_tag把需要渲染的数据交给另一个html文件渲染好,然后将其作为组件插入到使用inclusion_tag的地方.
        
    

    静态文件配置

    1.首先在项目文件夹下创建一个文件夹,作存放静态文件用.
    2.然后到settings.py文件配置.
        
        STATIC_URL = '/static/'   # 给下面的路径起别名,统一口径
    
        # 配置静态文件路径
        STATICFILES_DIRS = [
            os.path.join(BASE_DIR,'staticFile'),
        ]
    
    3.html文件导入静态文件(以css1.css为例)
    方法1:
    	STATIC_URL = '/static/'
    	<link rel="stylesheet" href="/static/css1.css/">
    
    方法2:
    	在html顶部写上 {% load static %}
    	<link rel="stylesheet" href="{% static 'css1.css' %}">
    
    方法3:
    	在html顶部写上
    	{% load static %}
    	{% get_static_prefix %} 
    	<link rel="stylesheet" href="{% get_static_prefix %}css1.css">
    	
    方法4:
    	在html顶部写上
    	{% load static %}
    	{% get_static_prefix as gsp %}
    	<link rel="stylesheet" href="{{ gsp }}css1.css">
    
    

    ORM

    ORM --- Object Relational Mapping

    映射关系:

    将类对象 --- sql

    类 --- 表

    对象 --- 行

    属性 --- 字段

    1.在app01应用下的models.py中写类
        
        class UserInfo(models.Model):   # 先继承models.Model
    
            id = models.AutoField(primary_key=True)     # 创建类属性
            name = models.CharField(max_length=16)  # 16字符
            age = models.IntegerField()
            current_date = models.DateField()
    
    2.默认连接sqlite数据库
    
    3.配置并连接mysql
    	1.settings.py中配置和连接
            DATABASES = {
            'default': {
                'ENGINE': 'django.db.backends.mysql',
                'HOST': '127.0.0.1',
                'PORT': 3306,
                'NAME': '库名',
                'USER': '用户名',
                'PASSWORD': '密码',
           		}
        	}
    	2.项目文件夹下的__init__.py中(是项目文件夹,不是应用文件夹!)
        	import pymysql
    		pymysql.install_as_MySQLdb()
    
            #MySQLdb是django默认的python连接mysql数据库的客户端模块,但它不支持py3.4以上的版本
            #pymysql.install_as_MySQLdb() 这句指令将django连接mysql的模块替换成pymysql
    	
        3.执行数据库同步指令
        	python manage.py makemigrations
            python manage.py migrate
    
    

    查看类里的属性与mysql字段的映射关系 : django --- db --- backends --- mysql --- base.py

  • 相关阅读:
    (数据科学学习手札33)基于Python的网络数据采集实战(1)
    (数据科学学习手札32)Python中re模块的详细介绍
    (数据科学学习手札31)基于Python的网络数据采集(初级篇)
    (数据科学学习手札30)朴素贝叶斯分类器的原理详解&Python与R实现
    (数据科学学习手札29)KNN分类的原理详解&Python与R实现
    (数据科学学习手册28)SQL server 2012中的查询语句汇总
    牛客3 F/G 牛牛的Link Power |线段树区间修改
    牛客2-H施魔法|线段树优化dp,维护区间最小值
    2020牛客寒假算法基础集训营1
    友情链接
  • 原文地址:https://www.cnblogs.com/straightup/p/13419594.html
Copyright © 2011-2022 走看看