栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Django课堂实战

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Django课堂实战

总体计划:

Django目录结构


分享一款前端小工具 Bootstrap可视化布局系统 代码实战 1. 创建Django项目
django-admin startproject report
2. 修改基础配置, 打开settings.py文件

3. 查看是否安装成功
python manage.py runserver

成功界面

4. 创建第一个视图
  • 创建子应用并在settings.py中注册
python manage.py startapp app01 // 创建名为app01的子应用

在settings.py中注册:

  • 在app01/views.py中创建一个简单的视图函数
from django.http import HttpResponse
from django.shortcuts import render

# Create your views here.

def index(request):
    return HttpResponse("This is my first app index!")

  • 在app01目录下新建urls.py子文件,加入views.py中的函数路由
from django.urls import path

from . import views

urlpatterns = [
    path('', views.index, name='index'),
]
  • app01中的urls.py文件添加进report/urls.py中
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('app01/', include('app01.urls')),
]

  • 启动服务,运行成功截图


修改默认数据库为mysql
  • settings.py中
DATAbaseS = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'report',
        'USER': 'root',
        'PASSWORD': 'xxxxxx',
        'HOST': 'localhost',
        'PORT': '3306'
    }
}
  • _ init_ _.py中添加
import pymysql

pymysql.install_as_MySQLdb()
  • 启动服务,查看是否成功
创建配置templates、static
  • 在项目根目录下创建文件夹templates、static
  • 在settings.py中配置templates目录路径
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(base_DIR, 'templates')], 
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]
  • 配置static目录
STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(base_DIR, 'static'),
]

将新建的html文件放入templates, css、img、js等放入static, 注意Django模板语法 写好的index.html



    
    
    

    简单示例

    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    





Hi This is

Fu zihao

A Back-end Developer and Student



Hi Guys!

Est diam venenatis arcu lacus ad. Duis quis eros. Cursus et rutrum eleifend sollicitudin lacinia justo id turpis. Nec convallis integer. Odio eget duis. Nulla aenean et. Blandit varius sollicitudin. Pellentesque leo primis neque urna magnis. Elit ut sollicitudin. Et est a nam dolores eget itaque sagittis et parturient duis est eleifend sociis rutrum odio viverra integer.

  • 姓名 张三
  • 年龄 23
  • 性别 男
  • 所在地 山东省青岛市
  • 手机 + (00) 123 456 789
  • 电子邮件 email@example.com
  • 个人爱好 唱跳rap篮球
头像分析 头像动漫化
250

Project Working

950

Project Done

150

Awards Received

299

Happy Clients

upload.html



    
    
    
    个人信息


根据需求建数据表, app01/models.py中
from django.db import models


# Create your models here.

class User(models.Model):
    '''创建个人信息对应的Model类'''
    id = models.AutoField(primary_key=True)  # 默认主键自增id字段可不写
    name = models.CharField(max_length=16)
    age = models.SmallIntegerField()
    sex = models.CharField(max_length=6)
    location = models.CharField(max_length=30)
    phone = models.CharField(max_length=15)
    email = models.CharField(max_length=30)
    hobby = models.TextField()
    avatar = models.ImageField(upload_to='static/img/avatar', unique=True)

    def toDict(self):
        return {'uname': self.uname, 'age': self.age, 'sex': self.sex, 'location': self.location,
                'phone': self.phone, 'email': self.email, 'hobby': self.hobby, 'avatar': self.avatar}

    # 自定义表名,默认为app01_user
    class meta:
        db_table = 'user'
执行数据迁移
python manage.py makemigrations # 生成迁移文件
python manage.py migrate # 执行迁移

迁移成功如下

app01/views.py中编写上传视图函数
from django.http import HttpResponse
from django.shortcuts import render
from .models import User


# Create your views here.

# 首页
def index(request):
    return render(request, 'index.html')


# 上传界面
def upload(request):
    return render(request, 'upload.html')

# 执行上传
def doUpload(request):
    user = User()
    try:
        user.name = request.POST['name']
        user.age = request.POST['age']
        user.sex = request.POST['sex']
        user.location = request.POST['location']
        user.phone = request.POST['phone']
        user.email = request.POST['email']
        user.hobby = request.POST['hobby']
        user.avatar = request.FILES['avatar']
        user.save()
    except:
        pass
    return redirect(reverse('index'))

将视图函数注册到app01/urls.py中
urlpatterns = [
    path('', views.index, name='index'),
    path('upload', views.upload, name='upload'),
    path('doUpload', views.doUpload, name='doUpload'),
]

修改upload.html表单提交路由,启动服务,进入upload页面并填写信息提交,查看数据库,检查信息是否上传成功

接下来进行信息展示

改写index()函数,查询数据库数据并传到前端
# 首页
def index(request):
    users = User.objects.all()
    context = {'users': users}
    return render(request, 'index.html', context)
启动服务,查看首页,能看到所有用户信息 此时,DEBUG模式还处于开启状态,后台报错信息(如404)会显示在前端,我们需要设置DEBUG=False,编写自定义404界面



    404


    

404, 您访问的页面不存在

此时新的问题出现了,打开首页,发现图片不显示了!原因如下:
Django框架仅在开发模式下提供静态文件服务。开启DEBUG模式时,Django内置的服务器是提供静态文件的服务的,所以css等文件访问都没有问题,但是关闭DEBUG模式后,Django便不提供静态文件服务了
解决方式,使用下面命令启动服务
python manage.py runserver --insecure

接下来是人脸识别部分

数据库表
class Face(models.Model):
    '''上传的人脸图片链接地址'''
    pictUrl = models.CharField(max_length=500)

    class meta:
        db_table = 'face'
urls.py路由
path('faceUpload', views.faceUpload, name='faceUpload'),
path('doFaceUpload', views.doFaceUpload, name='doFaceUpload'),
path('faceAttribute', views.faceAttribute, name='faceAttribute'),
path('faceCartoon', views.faceCartoon, name='faceCartoon'),
属性检测和动漫化的视图函数

# 人脸上传界面
def faceUpload(request):
    return render(request, 'faceUpload.html')


# 执行图片上传
def doFaceUpload(request):
    face = Face()
    face.pictUrl = request.POST['pictUrl']
    face.save()
    return redirect(reverse('faceAttribute'))


# 人脸属性检测结果
def faceAttribute(request):
    face = Face.objects.last()
    url = face.pictUrl
    context = {'url': url, 'detectFace': detectFace(url)}
    return render(request, 'faceAttributes.html', context)


# 人脸动漫化
def faceCartoon(request):
    face = Face.objects.last()
    url = face.pictUrl
    context = {'url': faceCartoonPic(url)}
    return render(request, 'faceCartoon.html', context)

base.html
{% load static %}


    
    
    

    第一次汇报
    

    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    





Hi This is

Fu zihao

A Back-end Developer and Student

{% block part1 %} {% endblock %}
250

Project Working

950

Project Done

150

Awards Received

299

Happy Clients

faceUpload.html
{% extends "base.html" %}

{% block part1 %}



{% csrf_token %}
图片URL:
头像分析 头像动漫化

{% endblock %}
faceAttributes.html
{% extends "base.html" %}

{% block part1 %}



面部分析结果

仅供娱乐

  • 性别: {{ detectFace.gender }}
  • 年龄: {{ detectFace.age }}
  • 眼镜: {{ detectFace.glass }}
  • 帽子: {{ detectFace.hat }}
  • 口罩: {{ detectFace.mask }}
  • 颜值评分: {{ detectFace.beauty }}
  • 头发长度: {{ detectFace.hair_len }}
  • 有无刘海: {{ detectFace.hair_bang }}
  • 头发颜色: {{ detectFace.hair_color }}

{% endblock %}
faceCartoon.html
{% extends "base.html" %}

{% block part1 %}




{% endblock %}
面部分析部分截图 动漫化截图
                    
                
            
        
    
    
{% endblock %} ``` faceCartoon.html
{% extends "base.html" %}

{% block part1 %}




{% endblock %}
面部分析部分截图

动漫化截图

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/321230.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号