zoukankan      html  css  js  c++  java
  • Python学习day11 Django

    Day11 Django

    #Create on 2017/4/15


    第四课 Django基础 34minutes

    数据库

    DATABASES = {
    'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME':'dbname',
    'USER': 'root',
    'PASSWORD': 'xxx',
    'HOST': '',
    'PORT': '',
    }
    }
    2、模版

    TEMPLATE_DIRS = (
    os.path.join(BASE_DIR,'templates'),
    )
    3、静态文件

    STATICFILES_DIRS = (
    os.path.join(BASE_DIR,'static'),
    )

    第五课 Django框架揭秘 34minutes


    第六课 Django路由系统 36minutes

    动态URL配置
    url(r'^list/(\d*)', admin.site.urls)

    def list(request,id) 用ID来得到URL后面的数字

    可以通过URL来接收数据,在后台查看接收的内容---测试字母

    如果URL有两个参数,按顺序来
    url(r'^list/(\d*)/(\d*)', admin.site.urls)

    url(r'^list/(?P<name>\d*)/(?P<id>\d*)', list)
    def list(request,name,id) ----上面的name必须和函数中的参数匹配

    给参数默认值,如果没有ID,用{'id':222}设定默认值
    url(r'^list/(?P<name>\d*)', list,{'id':222})


    用以下方式可匹配一个或两个参数
    url(r'^list/(?P<name>\d*)/(?P<id>\d*)/$', list)
    url(r'^list/(?P<name>\d*)/$', list,{'id':222})


    将URL分散到所有APP中
    url(r'^list/', include('list.urls'))

    第7课 Django路由系统二 2minutes
    第8课 Django路由系统三 12minutes

    通过路由反射的方式来做URL,简化路由---参考网页


    第9课 Django的Model创建数据库表一 20minutes
    第10课 Django的Model创建数据库表二 64minutes

    from django.db import models

    2、models.CharField  字符串字段
      必须 max_length 参数
    3、models.BooleanField  布尔类型=tinyint(1)
      不能为空,Blank=True
    5、models.DateField  日期类型 date
      对于参数,auto_now = True 则每次更新都会更新这个时间;auto_now_add 则只是第一次创建添加,之后的更新不再改变。
    6、models.DateTimeField  日期类型 datetime
      同DateField的参数
    8、models.EmailField  字符串类型(正则表达式邮箱) =varchar
      对字符串进行正则表达式
    9、models.FloatField  浮点类型 = double
    10、models.IntegerField  整形

    12、models.IPAddressField  字符串类型(ip4正则表达式)
    13、models.GenericIPAddressField  字符串类型(ip4和ip6是可选的)
      参数protocol可以是:both、ipv4、ipv6
      验证时,会根据设置报错
    19、models.TextField  字符串=longtext
    20、models.TimeField  时间 HH:MM[:ss[.uuuuuu]]
    21、models.URLField  字符串,地址正则表达式

    设置默认数据
    models.TextField(defalut='11')

    修改表结构后,再更新时有两个方案:1在线设定值,2在Models里设置default

    Django里操作数据库没有手写的性能好
    Django通过ORM来操作数据库

    第11课 Django的Model数据库增删改查 90minutes
    一对一,一对多关系需要学习

    1、null=True 数据库中字段是否可以为空

    2、blank=True django的 Admin 中添加数据时是否可允许空值

    3、primary_key = False 主键,对AutoField设置主键后,就会代替原来的自增 id 列

    4、auto_now 和 auto_now_add
      auto_now 自动创建---无论添加或修改,都是当前操作的时间
      auto_now_add 自动创建---永远是创建时的时间

    5、choices---自动生成一个表格,放在内存中
    GENDER_CHOICE = (
    (u'M', u'Male'),
    (u'F', u'Female'),
    )
    gender = models.CharField(max_length=2,choices = GENDER_CHOICE)

    6、max_length
    7、default  默认值

    8、verbose_name  Admin中字段的显示名称
    9、name|db_column  数据库中的字段名称

    10、unique=True  不允许重复

    11、db_index = True  数据库索引

    12、editable=True  在Admin里是否可编辑

    13、error_messages=None  错误提示

    14、auto_created=False  自动创建

    15、help_text  在Admin中提示帮助信息

    16、validators=[]

    17、upload-to 上传文件
    file = models.FileField(upload_to = './upload/')

    修改错误提示
    cerate_date = models.DateTimeField(auto_now_add=True,error_messages={'invalid':'没有任何的输入'})


    def add(request,name):
    方式一:
    obj = user(Name=name)
    obj.save()
    方式二:
    user.objects.create(Name=name)

    return HttpResponse('add')

    def delete(request,id):
    user.objects.get(id=id).delete()
    return HttpResponse('del')


    def update(request,id,name):
    方式一:获取一个对象
    obj = user.objects.get(id=id)
    obj.Name = name
    obj.save()

    方式二:获取多个对象的集合Query_set
    user.objects.filter(Name__contains=name).update(Name = name)

    return HttpResponse('update')

    def get(request,name):
    obj = user.objects.filter(Name__contains=name)

    return HttpResponse(obj)

    filter(id__gt)大于
    filter(id__gt)小于
    filter(id__contains=id) 包括id关键字
    filter(id__icontains=id) 忽略大小写

    user.objects.all()[0:2] 取前两条数据,相当字符分片方法,用于分页

    user.objects.all().order_by('id') 正常排序,倒序前加-: '-id'

    user.objects.all().order_by('id').values('id') 取某一字段内容,以字典显示values_list以列表显示





    第12课 Django模板语言 100minutes

    模板中也有自己的语言,该语言可以实现数据展示

    {{ item }}
    {% for item in item_list %} <a>{{ item }}</a> {% endfor %}
      forloop.counter
      forloop.first
      forloop.last
    {% if ordered_warranty %} {% else %} {% endif %}
    母板:{% block title %}{% endblock %}
    子板:{% extends "base.html" %}
       {% block title %}{% endblock %}
    帮助方法:
    {{ item.event_start|date:"Y-m-d H:i:s"}}
    {{ bio|truncatewords:"30" }}
    {{ my_list|first|upper }}
    {{ name|lower }}


    {% ifequal user '字符 '%} 判断是否相等



    通过simple_tag实现模版语言中的帮助方法

    a、在app中创建templatetags文件夹

    b、创建任意 .py 文件,如:xx.py

    #!/usr/bin/env python
    #coding:utf-8
    from django import template
    from django.utils.safestring import mark_safe
    from django.template.base import resolve_variable, Node, TemplateSyntaxError

    register = template.Library()

    @register.simple_tag
    def my_simple_time(v1,v2,v3):
    return v1 + v2 + v3

    @register.simple_tag
    def my_input(id,arg):
    result = "<input type='text' id='%s' class='%s' />" %(id,arg,)
    return mark_safe(result)
    c、在使用自定义simple_tag的html文件中导入之前创建的 xx.py 文件名

    {% load xxx %} -temptags文件名

    d、使用simple_tag

    {% my_simple_time 1 2 3%}后面数字为参数,多个用空格分开
    {% my_input 'id_username' 'hide'%}

    e、再settings中配置当前app,不然django无法找到自定义的simple_tag

    INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app01',
    )



    Form,在Model里写,等同Model
    可以模板里直接写:{{form}}或者{{form.as_table}}

    if request.method == 'POST':
    form = Form(request.POST)
    if form.is_valid():
    data = form.cleaned_data
    #form.save()
    else:
    print form.errors.ad_json()

    需要学习一下




    第13课 Django内容回顾和作业 9minutes

    作业:主机管理
    数据库里有主机和主机组
    用户组,用户,多对多关系
    主机表和用户组一对多关系

    用户注册和用户登录

    主机信息展示:IP,硬件等

    需要用母板



     

     

  • 相关阅读:
    201871010132张潇潇《面向对象程序设计(java)》第六七周学习总结
    201871010132张潇潇《面向对象程序设计(java)》第七周总结
    201871010132张潇潇《面向对象程序设计(java)》第十周总结
    201871010132张潇潇《面向对象程序设计(java)》第四周学习总结
    201871010132张潇潇《面向对象程序设计(java)》第十三周学习总结
    201871010132张潇潇《面向对象程序设计(java)》第一周学习总结
    201871010132张潇潇《面向对象程序设计(java)》第八周总结
    201871010132——张潇潇《面向对象程序设计JAVA》第二周学习总结
    201871010132张潇潇《面向对象程序设计(Java)》第十一周学习总结
    201871010132张潇潇《面向对象程序设计(java)》第十二周学习总结
  • 原文地址:https://www.cnblogs.com/syother/p/6738357.html
Copyright © 2011-2022 走看看