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,硬件等

    需要用母板



     

     

  • 相关阅读:
    【HDOJ】2774 Shuffle
    【POJ】2170 Lattice Animals
    【POJ】1084 Square Destroyer
    【POJ】3523 The Morning after Halloween
    【POJ】3134 Power Calculus
    【Latex】如何在Latex中插入伪代码 —— clrscode3e
    【HDOJ】4801 Pocket Cube 的几种解法和优化
    【HDOJ】4080 Stammering Aliens
    【HDOJ】1800 Flying to the Mars
    SQL语法
  • 原文地址:https://www.cnblogs.com/syother/p/6738357.html
Copyright © 2011-2022 走看看