您的位置:首页 > 编程语言 > Go语言

Django 学习

2016-03-21 16:03 597 查看
urls.py路由系统

fromdjango.conf.urlsimporturl,include
fromdjango.contribimportadmin
fromwebimportviews,urls

urlpatterns=[
url(r'^admin/',admin.site.urls),
url(r'^list/(\d*)/',views.list),
url(r'^adm/(\d){4}/(\d){2}/',views.adm),
url(r'^login/(?P<name>\d*)/',views.login),
url(r'^login/(?P<name>\d*)/',views.login,{'id':222}),
url(r'^feng/',include('web.urls')),
]


{{yourPorn}}
<hr/>
{{name_list}}
<hr/>
<ul>
{%fork,vinname_list.items%}
{%ifv=='IT'%}
<listyle="background-color:springgreen;width:80px">{{k}}::{{v}}</li>
{%else%}
<li>{{k}}::{{v}}</li>
{%endif%}
{%endfor%}
</ul>


1.创建数据库-settings连接mysql的配置文件

DATABASES={
'default':{
'ENGINE':'django.db.backends.mysql',
'NAME':'fengjian',
'USER':'fengjian',
'PASSWORD':'123456',
'HOST':'172.16.230.151',
'PORT':'3306',
}

}

2.在settings的INSTALLED_APPS添加app(web)的models路径
INSTALLED_APPS=[
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'web',
]

3创建model,继承自modles.Model类
静态字段=model.CharField(max_length=50)

4.执行数据库
pythonmanage.pymakemigrations
pythonmanage.pymigrate

常用的models字段有,models.CharField,models.BooleanField,models.IntegerField,

models.TextField,models.DatetimeField



外键

一对多

classUserType(models.Model):
name=models.CharField(max_length=20)

classUserInfo(models.Model):
username=models.CharField(max_length=30)
password=models.CharField(max_length=30)
gender=models.BooleanField(default=True)
age=models.IntegerField(default=22)
memo=models.TextField(default='xxx')
createdata=models.DateTimeField(default='2016-03-2310:05')

typeid=models.ForeignKey('UserType')

一个用户类型(普通用户,管理员),对应多个用户

UserInfotableshow

idusernametypeid_id........

#############################################

多对多
一个用户可以对应多个组,

classGroup(models.Model):
  groupname=models.CharField(max_length=30)

classuser(models.Model):
  username=models.CharField(max_length=30)
  email=models.EmailField(default='abc@gmail.com')

  user_group_id=models.ManyToManyField('Group')

会单独自动添加出一张表user_group_id
iduser_idgroup_id


其他常用命令:

  pythonmanage.pyrunserver0.0.0.0
  pythonmanage.pystartappappname
  pythonmanage.pysyncdb
  pythonmanage.pymakemigrations
  pythonmanage.pymigrate

  pythonmanage.pycreatesuperuser


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
  继承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文件

常用的models字段有,models.CharField,models.BooleanField,models.IntegerField,

models.TextField,models.DatetimeField


classUserType(models.Model):
name=models.CharField(max_length=20)

classUserInfo(models.Model):
username=models.CharField(max_length=50)
password=models.CharField(max_length=50)
sex=models.BooleanField(default=False)
age=models.IntegerField(default=20)
mome=models.TextField(default='xxxx')
data=models.DateTimeField(default='2016-03-2212:00')
typeid=models.ForeignKey(UserType)#设置与UserType表关联一对多


group_repation=models.ManyToManyfieID(Group)设置多表关联

auto_now_add自动创建时间
auto_now自动生成修改时间

classAsset(models.Model):
  hostname=models.CharField(max_length=20)
  create_date=models.DateTimeField(auto_now_add=True)
  update_date=models.DateTimeField(auto_now=True)



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


models.py
#################################

#__coding:utf-8__
fromdjango.shortcutsimportrender,HttpResponse
#Createyourviewshere.
frommodelsimportAsset

deflist(request,id):
printid
returnHttpResponse('list')

deflogin(request,name):
printname
http_html='''
username:<inputname=username/>
password:<inputname=password/>
'''
returnHttpResponse(http_html)

defadm(request,id,id1):
printid,id1
returnHttpResponse('adminpage')

#deffeng(request):
#f=open('feng.html')
#data=f.read()
#returnHttpResponse(data)

defindex(request):
name_info={
'name':'fengjian',
'age':'33',
'sex':'boy',
'job':'IT',
}
returnrender(request,'index.html',
{
'yourPorn':'goingtohaodaifu',
'name_list':name_info,
})

defhosts(request):
returnrender(request,'hosts.html')

defAdd(request,name):
Asset.objects.create(hostname=name)
returnHttpResponse('ok')

defDelete(request,id):
Asset.objects.get(id=id).delete()
returnHttpResponse('ok')

defUpdate(request,id,hostname):
#obj=Asset.objects.get(id=id)
#obj.hostname=hostname
#obj.save()

models.Asset.objects.filter(id__lt=id).update(hostname=hostname)id__lt小于,id__gt大于id__contains模糊匹配相当于sql中的sql
models.Asset.objects.filter(id__contains=id).update(hostname=hostname)
models.Asset.objects.filter(id__gt=id).update(hostname=hostname

returnHttpResponse('ok')

defSelect(request,hostname):
seldata=Asset.objects.filter(hostname__contains=hostname)
foriteminseldata:printitem.hostname
returnHttpResponse('ok')#获取所有

defSelall(request):
#seldata=Asset.objects.all()#获取所有
seldata=Asset.objects.all()[0:2]#获取前2个
seldata=Asset.objects.all().order_by('id')
seldata=Asset.objects.all().order_by('-id')
printseldatareturnHttpResponse(seldata)

#############web.urls.py###################

fromdjango.conf.urlsimporturl
fromdjango.contribimportadmin
fromwebimportviews

urlpatterns=[url(r'^admin/',admin.site.urls),#
url(r'^feng/',views.feng),
url(r'^delete/(?P<id>\d*)/',views.Delete),
url(r'^add/(?P<name>\d*)/',views.Add),
url(r'^update/(?P<id>\d*)/(?P<hostname>\w*)/',views.Update),
url(r'^select/(?P<hostname>\w*)/',views.Select),
url(r'^selall/$',views.Selall),]


2、数据库操作
•增加:创建实例,并调用save
•更新:a.获取实例,再sava;b.update(指定列)
•删除:a.filter().delete();b.all().delete()
•获取:a.单个=get(id=1);b.所有=all()
•过滤:filter(name='xxx');filter(name__contains='');(id__in=[1,2,3]);
icontains(大小写无关的LIKE),startswith和endswith,还有range(SQLBETWEEN查询)'gt','in','isnull','endswith','contains','lt','startswith','iendswith','icontains','range','istartswith'
•排序:order_by("name")=asc;order_by("-name")=desc
•返回第n-m条:第n条[0];前两条[0:2]
•指定映射:values
•数量:count()
•聚合:fromdjango.db.modelsimportMin,Max,Sumobjects.all().aggregate(Max('guest_id'))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: