Django 基础,项目创建,URL路由,数据库操作
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django 基础,项目创建,URL路由,数据库操作相关的知识,希望对你有一定的参考价值。
一、安装Django
下载地址:https://www.djangoproject.com/download/
1、tar zxvf Django-1.8.10.tar.gz
2、cd Django-1.8.10
3、python setup.py install
二、创建一个Django项目
django-admin startproject sitename
常用命令:
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
三、URL路由
1、每个路由规则对应一个view中的函数
from django.conf.urls import include, url from django.contrib import admin from views import * urlpatterns = [ url(‘^hello/$‘,hello), url(‘^time/$‘,current_datetime), url(r‘^time/plus/(\d{1,2})/$‘,hours_ahead), ]
2、根据app对应路由规则的分类
url(r‘^web1/‘,include(‘web1.urls‘))
app:web1.urls
from django.conf.urls import include, url, patterns from django.contrib import admin from web1.views import * urlpatterns = patterns(‘‘, url(r‘^add/(?P<name>\w*)&(?P<not_name>\w*)/$‘,Add), url(r‘^del/(?P<id>\d*)/$‘,Delete), url(r‘^Update/(?P<id>\d*)&(?P<name>\w*)/$‘,Update), )
四、数据库操作
1、配置:
DATABASES = { ‘default‘: { ‘ENGINE‘: ‘django.db.backends.mysql‘, ‘NAME‘:‘dbname‘, ‘USER‘: ‘root‘, ‘PASSWORD‘: ‘xxx‘, ‘HOST‘: ‘‘, ‘PORT‘: ‘‘, } }
2、根据models.Model创建数据表
#!/usr/local/python27/bin/python2.7 # coding:utf8 # Create your models here. from django.db import models class UserInfo2(models.Model): username = models.CharField(max_length=50) password = models.CharField(max_length=50) memo = models.CharField(max_length=50) class args(models.Model): id = models.AutoField(primary_key = True) name = models.CharField(max_length=20,null=True) not_name = models.CharField(max_length=20,null=False) create_data = models.DateTimeField(auto_now_add = True) update_date = models.DateTimeField(auto_now = True,error_messages={"invalid":‘日期格式错误‘})
3、更多字段:
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 二进制<br>23、models.ImageField 图片<br>24、models.FilePathField 文件
4、更多字段参数:
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
5、数据库操作
from django.shortcuts import render from web1.models import * from django.http import HttpResponse from django.db.models import Min,Max,Sum from django.db import connection,transaction # Create your views here. # 添加数据 def Add(request,name,not_name): args.objects.create(not_name=not_name,name=name) return HttpResponse(‘ok‘) # 删除数据 def Delete(request,id): args.objects.get(id=id).delete() return HttpResponse(‘delete ok‘) # 更新数据,单行更新 def Update(request,id,name): obj = args.objects.get(id=id) obj.name = name obj.save() return HttpResponse(‘update ok‘) # 根据id大于等于的条件,多行更新 args.objects.filter(id__gt=id).update(name=name) return HttpResponse(‘multi update ok‘) # 根据id小于等于的条件,多行更新,也可以用于多行删除 args.objects.filter(id__lt=id).update(name=name) return HttpResponse(‘multi update ok‘) # 根据等于的条件多行操作 args.objects.filter(id=id).update(name=name) return HttpResponse(‘multi update ok‘) #还可以通过filter(id__in = [1,2,3])进行多行操作 # 模糊查询 def get(request,name): obj = args.objects.filter(name__contains=name) l1 = [] for i in obj: l1.append(i.name) l1.append(‘\n‘) return HttpResponse(l1) # 获取全部数据,通过values()指定获取单列数据。 def get_all(request): alldata = args.objects.all().values(‘id‘) print alldata.query return HttpResponse(alldata) # 获取指定行数据,[0:3] 从0行开始向下获取3行数据 def get_limit(request): alldata = args.objects.all()[0:3] print alldata.query return HttpResponse(alldata) # 排序 ,(‘-id’)为逆序 alldata = args.objects.all().order_by(‘id‘) alldata = args.objects.all().order_by(‘-id‘) # 聚合函数 def juhe(request): alldata = args.objects.aggregate(Max(‘id‘)) print alldata return HttpResponse(alldata) # 使用自定义的原生SQL语句 ‘‘‘ cursor = connection.cursor() cursor.execute(‘SELECT DISTINCT first_name ROM people_person WHERE last_name = %s‘, [‘Lennon‘]) row = cursor.fetchone() ‘‘‘ # 实例: def sour_sql(request,id): cursor = connection.cursor() cursor.execute(‘‘‘SELECT id FROM web1_args where id > %s ‘‘‘ % id ) row = cursor.fetchall() print row return HttpResponse(row)
本文出自 “突破舒适区” 博客,请务必保留此出处http://tchuairen.blog.51cto.com/3848118/1750478
以上是关于Django 基础,项目创建,URL路由,数据库操作的主要内容,如果未能解决你的问题,请参考以下文章