Django 学习
urls.py 路由系统 from django.conf.urls import url,include
from django.contrib import admin
from web import views,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>
{% for k,v in name_list.items %}
{% if v == 'IT' %}
<li style="background-color: springgreen;width: 80px">{{ k }}::{{ v }}</li>
{% else %}
<li>{{ k }}::{{ v }}</li>
{% endif %}
{% endfor %}
</ul>
. 创建数据库-settings 连接mysql的配置文件 DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME':'fengjian',
'USER': 'fengjian',
'PASSWORD': '',
'HOST': '172.16.230.151',
'PORT': '',
} } .在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',
] 创建model,继承自modles.Model类
静态字段 = model.CharField(max_length=) .执行数据库
python manage.py makemigrations
python manage.py migrate 常用的models字段有, models.CharField, models.BooleanField, models.IntegerField,
models.TextField, models.DatetimeField
外键 一对多 class UserType(models.Model):
name = models.CharField(max_length=) class UserInfo(models.Model):
username = models.CharField(max_length=)
password = models.CharField(max_length=)
gender = models.BooleanField(default=True)
age = models.IntegerField(default=)
memo = models.TextField(default='xxx')
createdata = models.DateTimeField(default='2016-03-23 10:05') typeid = models.ForeignKey('UserType') 一个用户类型(普通用户,管理员),对应多个用户 UserInfo tableshow id username typeid_id ........ ############################################# 多对多
一个用户可以对应多个组,
class Group(models.Model):
groupname = models.CharField(max_length=30) class user(models.Model):
username = models.CharField(max_length=30)
email = models.EmailField(default='abc@gmail.com') user_group_id = models.ManyToManyField('Group')
会单独自动添加出一张表user_group_id
id user_id group_id
其他常用命令: python manage.py runserver 0.0.0.0
python manage.py startapp appname
python manage.py syncdb
python manage.py makemigrations
python manage.py migrate python manage.py createsuperuser
、models.AutoField 自增列 = int()
如果没有的话,默认会生成一个名称为 id 的列,如果要显示的自定义一个自增列,必须将给列设置为主键 primary_key=True。
、models.CharField 字符串字段
必须 max_length 参数
、models.BooleanField 布尔类型=tinyint()
不能为空,Blank=True
、models.ComaSeparatedIntegerField 用逗号分割的数字=varchar
继承CharField,所以必须 max_lenght 参数
、models.DateField 日期类型 date
对于参数,auto_now = True 则每次更新都会更新这个时间;auto_now_add 则只是第一次创建添加,之后的更新不再改变。
、models.DateTimeField 日期类型 datetime
同DateField的参数
、models.Decimal 十进制小数类型 = decimal
必须指定整数位max_digits和小数位decimal_places
、models.EmailField 字符串类型(正则表达式邮箱) =varchar
对字符串进行正则表达式
、models.FloatField 浮点类型 = double
、models.IntegerField 整形
、models.BigIntegerField 长整形
integer_field_ranges = {
'SmallIntegerField': (-, ),
'IntegerField': (-, ),
'BigIntegerField': (-, ),
'PositiveSmallIntegerField': (, ),
'PositiveIntegerField': (, ),
}
、models.IPAddressField 字符串类型(ip4正则表达式)
、models.GenericIPAddressField 字符串类型(ip4和ip6是可选的)
参数protocol可以是:both、ipv4、ipv6
验证时,会根据设置报错
、models.NullBooleanField 允许为空的布尔类型
、models.PositiveIntegerFiel 正Integer
、models.PositiveSmallIntegerField 正smallInteger
、models.SlugField 减号、下划线、字母、数字
、models.SmallIntegerField 数字
数据库中的字段有:tinyint、smallint、int、bigint
、models.TextField 字符串=longtext
、models.TimeField 时间 HH:MM[:ss[.uuuuuu]]
、models.URLField 字符串,地址正则表达式
、models.BinaryField 二进制
、models.ImageField 图片
、models.FilePathField 文件 常用的models字段有, models.CharField, models.BooleanField, models.IntegerField,
models.TextField, models.DatetimeField
class UserType(models.Model):
name = models.CharField(max_length=20) class UserInfo(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-22 12:00')
typeid = models.ForeignKey(UserType) #设置与UserType表关联一对多
group_repation = models.ManyToManyfieID(Group) 设置多表关联
auto_now_add 自动创建时间
auto_now 自动生成修改时间
class Asset(models.Model):
hostname = models.CharField(max_length=20)
create_date = models.DateTimeField(auto_now_add=True)
update_date = models.DateTimeField(auto_now=True)
、null=True
数据库中字段是否可以为空
、blank=True
django的 Admin 中添加数据时是否可允许空值
、primary_key = False
主键,对AutoField设置主键后,就会代替原来的自增 id 列
、auto_now 和 auto_now_add
auto_now 自动创建---无论添加或修改,都是当前操作的时间
auto_now_add 自动创建---永远是创建时的时间
、choices
GENDER_CHOICE = (
(u'M', u'Male'),
(u'F', u'Female'),
)
gender = models.CharField(max_length=,choices = GENDER_CHOICE)
、max_length
、default 默认值
、verbose_name Admin中字段的显示名称
、name|db_column 数据库中的字段名称
、unique=True 不允许重复
、db_index = True 数据库索引
、editable=True 在Admin里是否可编辑
、error_messages=None 错误提示
、auto_created=False 自动创建
、help_text 在Admin中提示帮助信息
、validators=[]
、upload-to
models.py
################################# #__coding:utf-8__
from django.shortcuts import render,HttpResponse
# Create your views here.
from models import Asset def list(request,id):
print id
return HttpResponse('list') def login(request,name):
print name
http_html='''
username: <input name=username />
password: <input name=password />
'''
return HttpResponse(http_html) def adm(request,id,id1):
print id,id1
return HttpResponse('admin page') # def feng(request):
# f=open('feng.html')
# data = f.read()
# return HttpResponse(data) def index(request):
name_info = {
'name': 'fengjian',
'age':'',
'sex':'boy',
'job':'IT',
}
return render(request,'index.html',
{
'yourPorn':'going to hao daifu',
'name_list':name_info,
}) def hosts(request):
return render(request,'hosts.html') def Add(request,name):
Asset.objects.create(hostname=name)
return HttpResponse('ok') def Delete(request,id):
Asset.objects.get(id=id).delete()
return HttpResponse('ok') def Update(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
return HttpResponse('ok') def Select(request,hostname):
seldata = Asset.objects.filter(hostname__contains=hostname)
for item in seldata: print item.hostname
return HttpResponse('ok') #获取所有 def Selall(request):
#seldata = Asset.objects.all() #获取所有
seldata = Asset.objects.all()[:] #获取前2个
seldata = Asset.objects.all().order_by('id')
seldata = Asset.objects.all().order_by('-id')
print seldata return HttpResponse(seldata) #############web.urls.py################### from django.conf.urls import url
from django.contrib import admin
from web import views 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), ]
、数据库操作
•增加:创建实例,并调用save
•更新:a.获取实例,再sava;b.update(指定列)
•删除:a. filter().delete(); b.all().delete()
•获取:a. 单个=get(id=) ;b. 所有 = all()
•过滤:filter(name='xxx');filter(name__contains='');(id__in = [,,]) ;
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条[];前两条[:]
•指定映射:values
•数量:count()
•聚合:from django.db.models import Min,Max,Sum objects.all().aggregate(Max('guest_id'))
Django 学习的更多相关文章
- 今天主要推荐一下django学习的网址!
前言:每个月忙碌的头20天后,在上班时间投入到django理论学习的过程中,花了差不多3天时间简单的研究了一下django,着实废了我不少脑细胞. 采用虫师前辈的一张图和话: 如果你把这过程梳理清晰了 ...
- Django 学习笔记之四 QuerySet常用方法
QuerySet是一个可遍历结构,它本质上是一个给定的模型的对象列表,是有序的. 1.建立模型: 2.数据文件(test.txt) 3.文件数据入库(默认的sqlite3) 入库之前执行 数据库同步命 ...
- Django 学习笔记之三 数据库输入数据
假设建立了django_blog项目,建立blog的app ,在models.py里面增加了Blog类,同步数据库,并且建立了对应的表.具体的参照Django 学习笔记之二的相关命令. 那么这篇主要介 ...
- Django学习系列之Form基础
Django学习系列之Form基础 2015-05-15 07:14:57 标签:form django 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追 ...
- Django学习笔记(五)—— 表单
疯狂的暑假学习之 Django学习笔记(五)-- 表单 參考:<The Django Book> 第7章 1. HttpRequest对象的信息 request.path ...
- Django学习笔记(三)—— 型号 model
疯狂暑期学习 Django学习笔记(三)-- 型号 model 參考:<The Django Book> 第5章 1.setting.py 配置 DATABASES = { 'defaul ...
- django学习之Model(二)
继续(一)的内容: 1-跨文件的Models 在文件头部import进来,然后用ForeignKey关联上: from django.db import models from geography.m ...
- Python框架之Django学习
当前标签: Django Python框架之Django学习笔记(十四) 尛鱼 2014-10-12 13:55 阅读:173 评论:0 Python框架之Django学习笔记(十三) 尛 ...
- Django 学习笔记(二)
Django 第一个 Hello World 项目 经过上一篇的安装,我们已经拥有了Django 框架 1.选择项目默认存放的地址 默认地址是C:\Users\Lee,也就是进入cmd控制台的地址,创 ...
- Django 学习笔记(五)模板标签
关于Django模板标签官方网址https://docs.djangoproject.com/en/1.11/ref/templates/builtins/ 1.IF标签 Hello World/vi ...
随机推荐
- ibatis动态sql配置启动时提示:The content of elements must consist of well-formed character data...
ibatis动态sql配置启动时提示:The content of elements must consist of well-formed character data... 2012-07-18 ...
- 利用SpannableString设置文本
private void setTips(){ String big = "大字深色"; String small = "小字淡色"; Spannable ti ...
- wordpress 添加自定义菜单到管理面板(wp-admin)
如果你在做 wordpress 主题或插件的开发,通常需要在后台dashboard管理面板添加菜单方便用户做主题设置或插件设置.这篇文章要讨论的问题就是怎么样加这个菜单,加在哪里? 添加顶级菜单项 a ...
- UCenter 通信失败 和 无法同步登陆的调试方法
1. 看请求 2./uc_server/control/admin/app.php echo "\$url = $url <br />\n \$status = $status& ...
- Advanced Packaging Tool
https://en.wikipedia.org/wiki/Advanced_Packaging_Tool Eventually, a new team picked up the project, ...
- Apche Kafka 的生与死 – failover 机制详解
Kafka 作为 high throughput 的消息中间件,以其性能,简单和稳定性,成为当前实时流处理框架中的主流的基础组件. 当然在使用 Kafka 中也碰到不少问题,尤其是 failover ...
- Andrew Ng机器学习公开课笔记 -- Online Learning
网易公开课,第11课 notes,http://cs229.stanford.edu/notes/cs229-notes6.pdf 和之前看到的batch learning算法不一样,batch ...
- 用Delphi“遥控”按钮
很多情况下,我们需要在程序中实现这样的功能:在自编写的程序里控制另外一软件中的某个按钮被按下.比如,有一天你在聊QQ时觉得烦了,那么就想写程序来帮你按下“发送”按钮,省得你自己一次次动手了.那么,这个 ...
- Jetbrains phpstorm pycharm 免费授权注册码
通过授权服务器授权 jetbrains是一家专门做IDE的软件公司,软件也非常好用,但是授权特别贵,下面就说说免费的方式,就是使用授权服务器,地址:http://idea.qinxi1992.cn 自 ...
- JBoss的安装与配置(对应eclipse配置)【转】
安装JBoss纯粹是目的就是学习EJB3...至少现在是这样的 EJB需要运行在EJB容器中.每个J2EE应用服务器都含有EJB容器和Web容器.这样,既支持运行EJB,也可以运行Web应用 目前EJ ...