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

需要用母板



 

 

原文地址:https://www.cnblogs.com/syother/p/6738357.html