一个Django后端的例子(二)

我们的后端实现的功能是给前端提供返回数据,需要有数据库存储数据,接口实现对数据的操作,然后前端调用我们的接口可以获取到数据。这里我们实现一个工具列表的请求功能。

一:数据层开发

1)首先去Myapp的model.py文件去创建一张表,定义两个字段,工具名字和创建工具的日期

class DB_tool(models.Model):
    name = models.CharField(max_length=30,default='')
    stime = models.CharField(max_length=20,default='')
    def __str__(self):
        return self.name

2)同步表结构,在项目根目录执行

python3 manage.py makemigrations
python3 manage.py migrate

3)将数据表在admin.py文件中进行注册

admin.site.register(DB_tool)

经过注册的表就可以在Django后台管理中看到了,在项目根目录启动Django 

python3 manage.py runserver 

 打开后台测试:127.0.0.1:8000/admin/

我们可以在管理后台实现对数据表的增删改查,我们点进去添加几条数据

二:后端接口开发

1)在view.py 文件中写后端接口代码实现逻辑

import json
from django.http import HttpResponse
from Myapp.models import *


# Create your views here.
def get_tools(request):
    tools = DB_tool.objects.all()
    res = {}
    res['tools'] = list(tools.values())
    return HttpResponse(json.dumps(res),content_type='application/json')

这段代码的实现逻辑是:从DB_tool中获取全部数据,然后又把它整理后塞到了一个字典res中。

最后又把这个res字典变成json字符串,返回给了浏览器前端。这样写可能有部分朋友看不懂。所以咱到控制台一步步操作看看咱做了啥处理,根目录下输入

python3 manage.py shell

输入如下指令

from Myapp.models import *
tools = DB_tool.objects.all()
print(tools)

可以看到,输出结果是一个QuerySet类型的结果,并且4条数据只显示了一个字段

我们看看tools.value()会输出啥

我们可以看到还是QuerySet类型的结果,但4条数据显示了所有字段。我们还可以看出虽然我们只创建了两个字段,但是id是Django默认给我们创建的

我们看看list(tools.value())会输出啥

我们可以看到数据类型由QuerySet变成了list

然后我们把这个list赋给了res字典的tools键值。然后将字典转成json,传送给前端

这个接口的后端功能虽然完成了,但是url路由等还没有指定

2)urls.py中写路由

path('get_tools/',get_tools),

3)启动Django服务

在项目根目录执行

python3 manage.py runserver 

然后浏览器输入

http://127.0.0.1:8000/get_tools/

可以看到接口的返回结果了

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一段使用Django框架编的高质量后端代码,主要实现了一个简单的博客系统: ```python from django.db import models from django.contrib.auth.models import User class Post(models.Model): title = models.CharField(max_length=100) content = models.TextField() author = models.ForeignKey(User, on_delete=models.CASCADE) created_at = models.DateTimeField(auto_now_add=True) def __str__(self): return self.title class Comment(models.Model): post = models.ForeignKey(Post, on_delete=models.CASCADE, related_name='comments') author = models.ForeignKey(User, on_delete=models.CASCADE) content = models.TextField() created_at = models.DateTimeField(auto_now_add=True) def __str__(self): return f'{self.author} - {self.post}' class Like(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE) post = models.ForeignKey(Post, on_delete=models.CASCADE, related_name='likes') def __str__(self): return f'{self.user} - {self.post}' class UserProfile(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE) bio = models.TextField(blank=True) avatar = models.ImageField(upload_to='avatars/', blank=True) def __str__(self): return self.user.username ``` 这段代码中,我们定义了四个模型类:`Post`、`Comment`、`Like`和`UserProfile`,分别对应博客、评论、点赞和用户资料等不同的数据类型。其中,`Post`和`Comment`之间通过外键关联,一个博客可以有多个评论,一个评论只能属于一个博客;`Like`和`Post`之间也通过外键关联,一个博客可以有多个点赞,一个点赞只能属于一个博客;`UserProfile`和`User`之间通过一对一关联,一个用户只能有一个资料页面,一个资料页面只能属于一个用户。 这些模型类的定义中使用了Django提供的多种字段类型和参数,比如CharField、TextField、DateTimeField、ForeignKey、OneToOneField等等,以及auto_now_add和related_name等常用参数。这些参数可以帮助我们更方便地存储和查询数据,提高代码的可读性和可维护性。 除了模型类之外,我们还可以编视图函数、表单类、路由等其他部分的代码,来实现更完整的博客系统功能。这里只是展示了一个简单的例子,但是这段代码中的优秀实践和良好的代码风格可以为我们编更复杂的应用程序提供指导。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值