Django 模型与数据库操作

Django下的模型是一个个的类,执行迁移操作时会根据数据库配置自动生成/修改相应的数据表,无需手工建表/修改表,也无需关心所用的是哪种数据库,这些都是系统自动完成的,而且会记录下每一次的结构变动。

步骤。

1. 新建一个APP

python manage.py startapp test

2. 编写模型

在新生成的test目录下的models.py中编写模型类。

示例

from django.db import models

# Create your models here.

# 专栏
class Space(models.Model):
    domain = models.CharField(max_length=60)
    url = models.CharField(max_length=120)
    title = models.CharField(max_length=60)
    description = models.CharField(max_length=255, blank=True)
    posts = models.IntegerField()

3. 迁移

迁移分两步

python manage.py makemigrations
python manage.py migrate

4. 实例化

首先引入模型

首先引入模型

from test.models import Space

简单的插入一条记录

def test(request):
    space1 = Space(domain='11',url = 'http://11', title='my11', description='desc11', posts= 12);
    space1.save()
    return HttpResponse('')

5. QuerySet

首先配置test/urls.py

path('space/<str:domain>/', views.space, name='space'),
url(r'space_search/$', views.space_search, name='space_search')

获取单条记录

def space(request, domain=''):
    if domain=='':
        return HttpResponse('parameter error')
    print(f"domain:{domain}")
    row = Space.objects.get(domain=domain)
    res = {
        'code' : 1,
        'data' : {
            'domain' : row.domain,
            'url' : row.url,
            'title' : row.title,
            'description' : row.description,
            'posts' : row.posts,
        }
    }
    return HttpResponse(json.dumps(res), content_type="application/json")

获取多条记录

def space_search(request):
    domain = ''
    if request.method=='GET':
        if request.GET:
            domain = request.GET.get('domain', default='')
    if request.method=='POST':
        if request.POST:
            domain = request.POST.get('domain', default='')
    print(f"domain:{domain}")
    if domain == '':
        resp = {'code': 0, 'msg' : "请求参数不能为空"}
        return HttpResponse(json.dumps(resp), content_type="application/json")
    rows = Space.objects.filter(domain__icontains=domain)
    count = rows.count()
    data = []
    for row in rows:
        data.append({
            'domain' : row.domain,
            'url' : row.url,
            'title' : row.title,
            'description' : row.description,
            'posts' : row.posts,
        })
    res = {'code' : 1, 'count' : count, 'data' : data}
    return HttpResponse(json.dumps(res), content_type="application/json")

参考

  1. 官方文档 模型
  2. 官方文档 QuerySet

Leave a Comment

豫ICP备19001387号-1