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路由,数据库操作的主要内容,如果未能解决你的问题,请参考以下文章

Django——路由基础

Django之url路由

Django 路由控制

django下载安装 url路由

django url路由

django url路由