码迷,mamicode.com
首页 > 其他好文 > 详细

day18-Django入门

时间:2016-09-05 14:02:08      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:

1、路由系统

    project:
        django-admin startproject mysite
        cd mysite
        python manage.py startapp app01
        
    普通关系:
        /index/ -> 函数
        /login/ -> 函数
        ...
        # 反射:
            /(\w+)/(\w+)
            /home/index
            => 导入:home模块,getattr(index)  fun()
            
        
        
    动态关系:
        /index/(\w+)\  -> 函数(参数)
        
    路由分发:
        /index/  ->   app.url文件[ /index/(\w+)\  -> 函数(参数) ,]
        
2、模版

    a. 模版渲染的过程
    
    b. {{ k1 }} --> 索引是.
    
    c.  {% for item in k2 %}
            <p>{{ item }},{{ forloop.counter }},{{ forloop.counter0 }},{{ forloop.first }},{{ forloop.last }},{{ forloop.revcounter }}</p>
        {% endfor %}

    d. 模版语言的内置方法
    
    e. 自定义方法
        filter
        simple_tag
        
        1、创建指定文件,名称不能改 templatetags
        2、创建任意 .py 文件,如:xx.py
            
            from django import template
            from django.utils.safestring import mark_safe
            from django.template.base import resolve_variable, Node, TemplateSyntaxError
            # 必须不变
            register = template.Library()
            
            # 创建函数
            @register.filter
            def f1(value):
                return value + "666"
        3、在html模版的头部执行
        
            {% load xx %}
        
        4、
            k1 = ‘VVV‘
            {{k1}}    => vvv
            {{k1|f1}} => vvv666
        
        5、 settings.py 中注册app
        
        总结:
            filter
                限制:传参
                支持:模版语言的 if 条件
            simple_tag
                不支持:模版语言的 if 条件
    
    f. 模版的继承
        母板:
                
                balabala...
                
                {% block 名称 %} {% endblock %}
                
                balabala...
                
        
        子板:
                {% extends ‘母板html文件名‘ %}
                
                
                {% block 名称 %}
                
                    具体子页面的内容...
                    
                {% endblock %}
    
    g. include
    
        小组件: x.html
        
        {% include ‘x.html‘ %}
    
3、Ajax
    a. 下载
    b. 放置在static目录下
    c. setting配置
    c. html导入
    
    $.ajax({
        url: ‘/index/‘,
        type: ‘POST‘,
        data: {‘username‘: ‘alex‘,‘password‘: ‘123‘},
        success: function(data){
            // 当后台return之后,该函数自动执行
            // data就是后台返回的数据
        }
    })
    
    
    Ajax:
        1、XMLHttpRequest对象(原生Ajax)
        2、jQuery - XMLHttpRequest对象(jQuery ajax)
        3、跨域Ajax
            浏览器同源策略:
                Ajax,只能给自己的域名发请求
                跨域名,浏览器做拦截
            
            
四、model,ORM
    
    1、创建(CURD)数据库表
        class -> DB,表
        DB,表 -> 类
        
        a. app.models.py写类
            from django.db import models
 
            class userinfo(models.Model):
                name = models.CharField(max_length=30) # string
                email = models.EmailField()            # string,帮助admin做输入验证,modelform
                memo = models.TextField()              # text
        
        
        b. python manage.py makemigrations
           python manage.py migrate
    
           python manage.py createsuperuser
           
    
    2、操作数据库的数据
        类
        1、models.AutoField  自增列 = int(11)
          如果没有的话,默认会生成一个名称为 id 的列,如果要显示的自定义一个自增列,必须将给列设置为主键 primary_key=True。
        2、models.CharField  字符串字段
          必须 max_length 参数
        3、models.BooleanField  布尔类型=tinyint(1)
          不能为空,Blank=True
        4、models.ComaSeparatedIntegerField  用逗号分割的数字=varchar
            input:  12,345,989871234,
        
          继承CharField,所以必须 max_lenght 参数
        5、models.DateField  日期类型 date
          对于参数,auto_now = True 则每次更新都会更新这个时间;auto_now_add 则只是第一次创建添加,之后的更新不再改变。
        6、models.DateTimeField  日期类型 datetime
          同DateField的参数
        7、models.Decimal  十进制小数类型 = decimal
          必须指定整数位max_digits和小数位decimal_places
        8、models.EmailField  字符串类型(正则表达式邮箱) =varchar
          对字符串进行正则表达式
        9、models.FloatField  浮点类型 = double
        10、models.IntegerField  整形
        11、models.BigIntegerField  长整形
          integer_field_ranges = {
            ‘SmallIntegerField‘: (-32768, 32767),
            ‘IntegerField‘: (-2147483648, 2147483647),
            ‘BigIntegerField‘: (-9223372036854775808, 9223372036854775807),
            ‘PositiveSmallIntegerField‘: (0, 32767),
            ‘PositiveIntegerField‘: (0, 2147483647),
          }
        12、models.IPAddressField  字符串类型(ip4正则表达式)
        13、models.GenericIPAddressField  字符串类型(ip4和ip6是可选的)
          参数protocol可以是:both、ipv4、ipv6
          验证时,会根据设置报错
        14、models.NullBooleanField  允许为空的布尔类型
        15、models.PositiveIntegerFiel  正Integer
        16、models.PositiveSmallIntegerField  正smallInteger
        17、models.SlugField  减号、下划线、字母、数字
        18、models.SmallIntegerField  数字
          数据库中的字段有:tinyint、smallint、int、bigint
        19、models.TextField  字符串=longtext
        20、models.TimeField  时间 HH:MM[:ss[.uuuuuu]]
        21、models.URLField  字符串,地址正则表达式
        22、models.BinaryField  二进制
        
        23、models.ImageField   图片    字符串
        24、models.FilePathField 文件   字符串



    a. 单表
    b. 一对多:Forigkey
    c. 多对多
    d. 一对一
    
        
    obj = model.UserInfo.objects.filter(name=‘alex‘)
    print obj.query
    
    queryset -> python,Django的类
    [obj1,obj2,obj3]
    
    obj = model.UserInfo.objects.filter(name=‘alex‘).values(‘id‘,‘email‘)
    # select id from userinfo where name = ‘alex‘
    
    queryset -> python,Django的类
    [{‘id‘:1},{‘id‘: 2},]
    
    obj = model.UserInfo.objects.filter(name=‘alex‘).value_list(‘id‘,‘email‘)
    # select id from userinfo where name = ‘alex‘
    
    queryset -> python,Django的类
    [(1,‘1@qq.com‘),(2,‘alex@11.com‘),]
        
        
    queryset.query => SQL语句
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
       

day18-Django入门

标签:

原文地址:http://www.cnblogs.com/aaron-shen/p/5841949.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!