django 入门,快速搭建一个后端接口

点击上方“AI搞事情”关注我们


创建项目

django-admin startproject autoweb

项目目录结构:

3727a7d02e2f1d21a6f923c174037cf1.png

manager.py 与项目进行交互的命令行工具集的入口(项目管理器)

autoweb 目录:项目容器,同项目名,包含项目的基本配置,目录名称不建议修改

__init__.py Python中声明模块的文件,内容默认为空

settings.py 项目的总配置文件,包含数据库、Web应用、时间等各种配置

urls.py URL配置文件,Django项目中所有地址(页面)都需要我们自己去配置其URL

wsgi.py WSGI(Python Web Server Gateway Interface)Python服务器网关接口,Python应用与Web服务器之间的接口。

创建应用

python manage.py startapp web

应用目录:

6daecf237233f5beb50a27bf3be5f050.png

使用命令行创建应用时需要手动将应用名添加到settings.py中的INSTALLED_APPS里,应用名不能与Python中模块名相同

a44f9968d2174a73971cc27ef5ff7fd7.png

migrations 数据移植(迁移)模块

__init__.py: Python中声明模块的文件,内容默认为空

admin.py: 应用的后台管理系统的配置

apps.py: 应用的一些配置,Django-1.9以后自动生成

models.py: 数据模型,使用ORM框架,类似于MVC结构中的Models(模型)

tests.py: 自动化测试模块,Django提供了自动化测试功能,在这里编写测试脚本(语句)

views.py: 执行响应代码和逻辑处理的主要模块,包含项目中的大部分代码

启动服务

manage.py runserver 0.0.0.0:8000

0.0.0.0表示可通过服务器的所有ip访问到,8000位自定义端口号;浏览器访问:127.0.0.1:8000出现默认页面

c64bdaa4e473fe85e3ab59f1f2fd632c.png

如果需要和前端对接,前端通过IP访问需要将本机IP加入到setting的ALLOWED_HOSTS列表里面,这样就可以通过IP + 端口进行访问了

路由配置

主路由:项目容器下urls.py

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('pic/', include('web.urls')), # 为web应用配置一个入口
]

子路由:应用目录下创建一个urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('message', views.gen_web, name='gen_web'),
]

接口开发

主要在views.py为上述路由地址实现相应函数,实现相关的功能。

views每个对外方法的参数都是request,Django 把请求的 metadata 数据包装成一个 HttpRequest 对象,然后 Django 加载合适的 view 方法,把这个 HttpRequest 对象作为第一个参数传给 view 方法。任何 view 方法都应该返回一个 HttpResponse 对象。

比如在这里,我们根据前端上传的描述字段,返回若干图像的list给前端进行展示。

import json
from django.http import HttpResponse
from web.wudao.get_image import get_image

def gen_bg(request):
    """返回图像信息"""
    try:
        if request.method == 'POST':
            request_body = request.body
            festival_str = eval(request_body.decode())['descripe']
            print(festival_str)
            # 获取图像信息

            base64_lst = get_image(festival_str)
            if len(base64_lst) != 0:
                return HttpResponse(json.dumps({'code': '0', 'data': {'images': base64_lst}, 'msg': 'success'}))
            else:
                return HttpResponse(json.dumps({'code': '1', 'data': {'images': base64_lst}, 'msg': 'fail'}))
        else:
            return HttpResponse(json.dumps({'code': '1', 'msg': '请求方法错误!'}))
    except Exception as e:
        return HttpResponse(json.dumps({'code': '1', 'msg': str(e)}))

前端通过访问:ip:port/pic/get_bg,就可以获取后端服务传过去的若干图像,前端通过页面渲染便可以把图像展示出来。

e69149325d3ae0500020bf3d314c98c9.png

8d145d0a2823b51feae2f3211bfcaef2.png

2e584af9b2568b247929f58310b59050.jpeg

长按二维码关注我们

有趣的灵魂在等你

ca158ddc05b7a25883eea05ca6f1924c.gif

ba575859c107cc0aa08026123a8dd940.png

900bda4f6b60297674a9a70e26f4bd13.png

  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的Django后端程序示例,它包括了一个视图函数、一个模型和一个表单类: 在`models.py`中定义模型: ```python from django.db import models class Book(models.Model): title = models.CharField(max_length=100) author = models.CharField(max_length=100) published_date = models.DateField() def __str__(self): return self.title ``` 在`forms.py`中定义表单类: ```python from django import forms from .models import Book class BookForm(forms.ModelForm): class Meta: model = Book fields = ['title', 'author', 'published_date'] ``` 在`views.py`中定义视图函数: ```python from django.shortcuts import render, redirect from .models import Book from .forms import BookForm def book_list(request): books = Book.objects.all() return render(request, 'book_list.html', {'books': books}) def add_book(request): if request.method == 'POST': form = BookForm(request.POST) if form.is_valid(): form.save() return redirect('book_list') else: form = BookForm() return render(request, 'add_book.html', {'form': form}) ``` 在`urls.py`中定义URL路由: ```python from django.urls import path from .views import book_list, add_book urlpatterns = [ path('books/', book_list, name='book_list'), path('books/add/', add_book, name='add_book'), ] ``` 最后,在模板中使用上述视图函数所返回的数据: `book_list.html`: ```html <!DOCTYPE html> <html> <head> <title>Book List</title> </head> <body> <h1>Book List</h1> <ul> {% for book in books %} <li>{{ book.title }} by {{ book.author }} (Published: {{ book.published_date }})</li> {% endfor %} </ul> <a href="{% url 'add_book' %}">Add a Book</a> </body> </html> ``` `add_book.html`: ```html <!DOCTYPE html> <html> <head> <title>Add a Book</title> </head> <body> <h1>Add a Book</h1> <form method="post"> {% csrf_token %} {{ form.as_p }} <button type="submit">Save</button> </form> </body> </html> ``` 注意,这个示例程序并没有包括任何数据库配置。你需要在`settings.py`文件中配置数据库连接,以便在使用模型时能够连接到数据库。此外,你还需要在`urls.py`文件中包含该应用程序的URL路由,以便Django能够找到和调用视图函数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值