Python+Django后台交互

MVC,MVT概念:

MVC:

M全拼model 主要封装数据库的访问,对数据库中的数据库进行增,删,改,查操作。

V全拼view用于封装结果,生成页面展示的的HTML内容。

C全拼controller用于接收请求处理业务逻辑与model和view进行交互返回结果。

MVT:

M全拼model 与mvc的m功能相同,负责和数据库交互,进行数据处理。

V全拼view 与mvc中的c功能相同,接收请求,进行业务处理,返回应答。

T全拼template 与mvc中的v功能相同,负责封装构造返回html。

安装步骤:

安装虚拟环境:

第一条命令:
sudo pip install virtualenv
第二条命令:
sudo pip install virtualenvwrapper

上述不能执行使用第二种方法:

第一条命令:
sudo python3 -m pip install virtualenv
第二条命令:
sudo python3 -m pip install virtualenvwrapper

如果下载速度慢:

可以在命令后面加豆瓣源:

添加一个豆瓣源: -i https://pypi.douban.com/simple
  • 添加三句话(家目录下面的 .bashrc 如果你是用zsh 添加到.zshrc ) 要让我们的配置生效 soure .bashrc soure .zshrc

作用: 指定我们默认Python解释器的位置,指定我们virtualenvwrapper.sh的位置,python软件包和解释器安装的位置
如果看不懂详见:https://www.jianshu.com/p/6a34c1baee6a

用法:

创建虚拟环境:

mkvirtualenv + 虚拟环境名字 -p + python版本

p:后面加python版本可以不写

查看所有虚拟环境:

workon

切换虚拟环境:

workon + 要切换的虚拟环境名

删除虚拟环境:

rmvirtualenv + 要删除的虚拟环境名

退出虚拟环境:

deactivate

需要安装软件包Django:

pip install django==1.11

因为安装 django 1.11比较稳定

开始创建我们的第一个django项目:

创建项目:
django-admin startproject + 项目名称

项目结构:

python
manage.py #用于管理整个项目的核心模块
会有一个python包(包名和项目同名)
settings.py #项目的路由模块
urls.py #项目的路由模块
wsgi.py #django轻量级服务器
test.py #用于写单元测试的模块

创建应用:

1.需要先进入到那个目录下面
2.进入项目的目录下面输入命令

python manage.py startapp + 应用名

应用结构:

会有一个之前创建的应用包 包含:
models.py #模型 用于创建模型 跟数据库交互
view.py #接收请求,处理返回的结果模块
admin.py #后台管理站点
tests.py #测试模块
migrations(文件夹,python包)生成的迁移文件
__init__.py 第一次执行迁移这里会生成记录

手动注意点: 1. 使用pycharm打开 项目的时候需要吧应用安装到项目里面
INSTALL_APPS—-> booktest
2. 虚拟环境 我们切换成 我们需要的那个虚拟环境
3. template 文件夹(手动没有这个文件)

手动创建一个这样的文件夹
需要去 settings.py 模块里面 把这个文件夹的地址 配置进来
templates 未来我们放html文件地方

用pycharm 也可以直接创建 项目和应用  并且相关的配置  它都给你做好了  上手即用
版本: pro 专业版  
在配置文件里面,可以把我们的项目展示出来的内容由英文变成中文
LANGUAGE_CODE = 'zh-hans' # zh-Hans 繁体
TIME_ZONE = 'Asia/Shanghai'

ORM:

django里面有一个模块model.py 类对应数据库里面一张表,对象对应数据库里面的一横数据

例:

class Person(models.Model):
    book = models.CharFiled(max_length=20)
Person 对应数据库里面的一张表
p = Person() 一条数据

案例:

from django.db import models 
# django模块代表代表从django.db导入models模型

from datetime import datetime #导入时间模块

class BookInfo(models.Model):
    bname = models.CharField(max_length=20)
    bpub_date =models.CharField(default=datetime.now)

继承自models.Model去写我们自己的内容

CharField 代表 varchar类型
max_length 代表 最大长度

生成迁移文件:

python manage.py makemigrations

执行迁移文件:

python manage.py migrate

创建超级用户及站点管理:

后台管理 站点管理—>其实就是在管理你的数据库 通过界面而不是代码或者 sql语句

创建一个超级管理员
python manage.py createsuperuser
 将你的项目 python manage.py runserver 跑起来
 后台如果没有显示  各种模型 先去admin.py 文件里面 导入模型
 将模型注册到后台页面

简单操作

python manage.py  shell
  1. 导入对应的模型的模块
  2. 写代码 用django这个框架提供方式 来操数据库
# 往数据库里面写
1.  实例化一个对象 (模型-->表)
b = BookInfo()
2.  对象名.字段名    添加数据
b.bname = '射雕英雄传'
3.  保存操作的数据
b.save()
# 读
BookInfo.objects.all() # 列表,

模型类的名字.objects.all()是获取数据库里面所有的行——> 列表(里面装的是一个个对象)
模型类的名字.objects.get(id=1)是获取数据库里面的id=1的哪一条数据 —-> 对象
每一个对象 就是数据库里面的一行数据

小总结:
1. 模型类(model.py)
对应关系 类—-> 表 对象—-> 表里面一行
2. 你用Python写完一个类 不意味着数据库里面就有数据
1> 生成迁移文件
2> 执行迁移文件
3. 最最简单操作 通过 shell脚本来 临时
1. 添加
1> 导入模块(你要的模型类)
2> 添加 实例化一个对象 通过对象名.属性名 就可以添加一条数据 但是 在数据库里面 没有添加成功 因为 要 保存 对象名.save()
3. all get
模型类类名.objects.all()—>获取所有数据
模型类类名.objects.get(条件)—-> 满足条件的某一条数据

查询集表示从数据库中获取的对象集合,在管理器上调用某些过滤器方法会返回查询集,查询集可以含有零个、一个或多个过滤器。过滤器基于所给的参数限制查询的结果,从Sql的角度,查询集和select语句等价,过滤器像where和limit子句。

返回查询集的过滤器如下:

all()返回所有数据
filter()返回满足条件的数据
exclude()返回满足条件之外的数据,相当于SQL语句中where部分的not关键字
order_by()对结果进行排序

返回单个值的过滤器如下:

get()代表返回返回单个满足条件
count()返回当前查询结果的总数
aggregate()聚合 返回一个字典

利用AJAX获取get请求实现异步请求返回结果案例演示:

首先我们在pycharm的templates文件里创建两个html的模板 名字可以随便起 在案例中我们把两个名字一个设为json1.html和json2.html

如图:

这里写图片描述

紧接着我们在views.py文件中设置两个python函数来为templates展示页面

如图:


导入JsonResponse 它是HttpResponse的子选项
这里写图片描述
第一个函数代表获取数据
第二个函数代表返回结果

然后我们去配置这两个函数的路由也就是urls.py文件:

如图:

这里写图片描述
我们进入urls.py首先要做的第一件事情是要在book应用下导入views的文件数据(因为本人建的是book应用,我们在应用下面的urls.py去设置路由)
这里写图片描述
在这里我们运用到了反向解析这样使得路由地址更清晰更安全更简洁

这时我们就要在templates的两个模板里面去运用ajax去写我们的模板并实现异步请求及结果

我们首先在json1.html文件上进行书写

这里写图片描述
首先我们要配置jQuery的CDN 由于我们要方便简洁就可以在这里找到地址 但是重要的是每一次项目都必须联网
这里写图片描述
找到版本进行复制到json1.html中
这里写图片描述

接下来我们开始在json1.html绘制内容:这里写图片描述

我们首先要在body标签中去设置内容 这个配置流程就和我们平时写前端页面一样
button代表按钮 是我们即将用ajax获取结果的总指挥官
id为account和pwd代表利用ajax获取的账号密码结果之前的提示
那么我们去演示一下这个页面的概要信息
这里写图片描述

接着我们开始书写最重要的ajax的内容这时我会把每一个步骤的图片截下来翻译一遍请大家用心去看,其实学会了领略意思是非常简单的

这里写图片描述

首先我们要写一个script的标签在里面去写这个 那么我们看到这个会觉得有点乱
 所以我们在每一次碰到$的时候后面都会加一对括号就像这样$() 然后在括号里
 写上function(){}就像这样
 这样就会形成
 $(function(){
 })
 这段话的含义是接收上下文 据我感觉就是上文的cdn下文的body 这样才能接收
 并使用

这时我们开始写button把总指挥给写出来
这里写图片描述

首先我们写$()在括号里写$('#action')代表我们在body写的按钮在这里去
相互连接 然后后面要写监听事件在鼠标点击的时候会反馈一个请求 
$('#action').click() 紧接着在.click()的括号里写入function(){}这
代表回调函数把function里面的内容来给.click去支配 当我们点击 就会产
生这个请求$('#action').click(function(){
})

接下来我们要在回调函数的括号内用get请求获取view里的配置内容在json2.html来呈现结果
这里写图片描述
我们用反向解析的形式来配置json2的路径 此时大家会想 那json2在模板中写不写内容
其实不用因为我们早在view.py的文件中json2是JsonResponse来返回结果的的
这里写图片描述
当我们每一次点击按钮时会呈现json2的结果 由于我们没有在json2里设置内容所以显示的是空白
所以我们进行下一步操作
这里写图片描述
当我们获取get请求时 利用回调函数返回我们data也就是说我们在回调函数里面的数据 所以我们要把body里面的account和pwd利用.html函数去返回view里数据a的内容 和数据b的内容
这里写图片描述
这时我们去运行一下
这里写图片描述
这里写图片描述
所以我们在点击按钮的时候发出了一个get请求获取了view里的a数据和b数据
并用异步请求展现出来

cookie和session的区别:

cookie的缺点 cookie的键和值都存在浏览器的客户端里面 意味着安全性不高 本地可以有办法随意篡改

session 代表 客户端 向服务器发起请求 这时候服务器会有一张表 表里有两个字段 一个是 session的id 一个是session的值 然后在浏览器本地存了 一个cookie 这个cookie的键 是session id的值 当客户端又一次发起请求时 就带上这个上这个 session id


django登录实战

我们首先在pycharm创建新的一个项目和应用 项目名叫login_login 应用名叫login_user请看下图:

这里写图片描述
这里写图片描述

然后就create创建项目和应用

在mysql里面创建一个数据库为了保存您的账号密码等数据如下图:

这里写图片描述

创建了一个名叫loginA的数据库

然后我们进行settings的相关配置:

这里写图片描述
这里写图片描述
这里写图片描述

我们开始在models.py创建表的模型:

在这个模型中我们要设计 用户名,密码,邮箱地址,性别,创建时间

#设计一个User的模型类
class User(models.Model):
#设计一个元祖来给性别传值
    gender = (
        ('boy', '男孩'),
        ('gril', '女孩')
    )
    #设计用户名 最大长度为128 站点管理显示用户名字段 字段unique唯一不得重复
    name = models.CharField(max_length=128, verbose_name='用户名', unique=True)
    #设计密码 最大长度为256 因为可能会关系到加密问题所以在数据库里把字符调的长了一些
    password = models.CharField(max_length=256, verbose_name='密码')
    #设计邮箱 使用专门的EmailField类型
    email = models.EmailField(verbose_name='邮箱')
    #设计性别 把之前的gender利用choices来接收 设置字符长度10 默认为男
    sex = models.CharField(max_length=10, choices=gender, default='男', verbose_name='性别')
    #设计创建时间 使用专门的DateTimeField字段去设置
    t_time = models.DateTimeField(auto_now_add=True, verbose_name='时间')
    #人性化设计用户名 方便在站点管理显示
    def __str__(self):
        return self.name
        #设计Meta元信息 名字为用户表 复数形式也等于用户表
    class Meta:
        verbose_name = '用户表'
        verbose_name_plural = verbose_name

在项目包下的 init文件中设置 与pymysql的链接配置如下图:

这里写图片描述

随后我们在下方Terminal终端中输入命令 第一条命令代表 生成迁移 代表 把刚刚models.py设计的模型表 和一系列配置进行当前的生成 但是 这个是生成不带表 已经执行这里写图片描述

紧接着我们进行执行迁移

这里写图片描述

全是OK代表就是成功的

然后开始创建站点管理的超级用户

这里写图片描述

我们在应用下的admin.py中注册我们的模型表

这里写图片描述

首先导入应用下的models模型下的User应用
from .models import User
然后注册User模型
admin.site.register(User)

我们用命令开始登录服务器

这里写图片描述

用服务器地址登录admin

这里写图片描述

为了能让用户看到我们展示的页面 所以我们在templates文件中创建 4个html文件 这时我们选中templates右键 new 找到html 点击 会出现小框 一个一个就这样创建

这里写图片描述
这里写图片描述

这四个文件 base.html代表父模板 剩下的三个网页都要继承base.html 其中 这三个文件 index.html代表首页 login.html代表登录页 register.html代表注册页

然后开始设置应用下的views.py

#首先导入模型下的User表
from .models import User
#导入重定向
from django.shortcuts import redirect
#创建index首页函数 return返回首页前端模板
def index(request):
    return render(request, 'index.html')

#创建login登录函数 return返回登录页前端模板
def login(request):
    return render(request, 'login.html')

  • 14
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python是一种高级编程语言,可以用来开发各种类型的应用程序。DjangoPython的一个开发框架,它提供了一套完整的工具和函数,用于快速开发高质量的Web应用程序。Vue是一种JavaScript框架,用于构建用户界面。 我们可以使用PythonDjango来开发一个后台管理系统,该系统可以用于管理各种数据和业务逻辑。使用Django的ORM(对象关系映射)功能,我们可以轻松地组织和管理数据库中的数据。我们可以定义模型类来表示数据库表,然后使用Django提供的视图和模板来呈现和操作这些数据。 对于PDF文件的处理,可以使用Python中的第三方库来实现。例如,可以使用PyPDF2库来提取PDF文件的内容,或者使用ReportLab库来生成PDF文件。 在后台管理系统中,我们可以使用Vue来构建用户界面。Vue的组件化开发模式可以帮助我们清晰地划分界面,提高开发效率。通过Vue的数据绑定功能,我们可以实现一个交互式的用户界面,以方便用户对数据进行操作和管理。 总结起来,我们可以使用PythonDjango来开发后台管理系统,然后使用Vue来构建用户界面。在系统中处理PDF文件时,可以使用Python的第三方库来实现相关功能。这样的系统将能够方便地管理数据,并提供一个友好和交互式的用户界面。 ### 回答2: Python是一种强大的编程语言,而DjangoPython的一个开发框架,它能够快速地帮助开发者搭建出高效稳定的后台管理系统。而Vue是一种流行的JavaScript框架,能够实现前端页面与后台数据的交互。 在这个后台管理系统中,我们希望能够实现对PDF文件的管理,以及对其进行操作和展示。具体而言,我们希望实现以下功能: 1. 文件上传和保存:用户可以通过该系统上传PDF文件,并将其保存在后台数据库中进行管理。 2. 文件列表展示:系统能够展示已上传的PDF文件列表,包括文件名称、上传时间等信息。 3. 文件预览:用户可以点击某个文件,在前端页面上进行预览,查看PDF文件内容。 4. 文件下载:用户可以选择下载某个PDF文件到本地,以便查看或者进行其他操作。 5. 文件搜索:系统能够根据用户输入的关键词,对已上传的PDF文件进行搜索,并返回相关结果。 为了实现这些功能,我们可以借助Django的文件上传和数据库操作功能。前端页面可以使用Vue来展示文件列表和搜索框,并通过Vue的组件化和数据绑定特性实现动态更新。而PDF文件的预览和下载功能,则可以使用一些开源的JavaScript库,如PDF.js等。 总的来说,通过PythonDjango框架和Vue的前端开发能力,结合PDF的相关JavaScript库,我们能够实现一个功能齐全、操作方便的后台管理系统,提供便捷的PDF文件管理和展示功能。 ### 回答3: Python是一种高级编程语言,Django是一个基于Python的Web框架,而Vue是一个流行的JavaScript框架。结合这三者,可以实现一个功能强大的后台管理系统,并且支持生成和展示PDF文件。 首先,使用Django来搭建后台,可以使用Django的模型和视图来定义和处理数据模型。通过定义模型类,可以创建数据库表格,并通过视图函数来处理用户的请求,并返回相应的数据或页面。 在前端部分,可以使用Vue来构建用户界面和交互逻辑。Vue有很多强大的功能,比如组件化、双向数据绑定和虚拟DOM等,可以提高开发效率和用户体验。可以使用Vue的组件来实现后台管理系统的各种页面和功能模块,比如用户管理、文章管理、数据统计等。 为了支持PDF的生成和展示,可以使用Python的第三方库,比如ReportLab来生成PDF文件。ReportLab提供了丰富的API来创建和编辑PDF,可以用于生成包含动态数据的PDF报告或文档。生成PDF后,可以使用Django的文件管理系统来存储和管理生成的PDF文件,同时可以通过Django的视图函数和模板来展示PDF文件或提供下载功能。 总结来说,使用PythonDjango框架和Vue框架,可以快速开发一个功能丰富的后台管理系统。通过结合Python的第三方库,还可以支持PDF的生成和展示功能。这样的系统既具备了后台数据管理的功能,又提供了良好的用户界面和交互体验,能够满足现代Web应用的需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值