Django项目开发一(头条)
文章平均质量分 60
django项目开发(头条)
敲代码敲到头发茂密
欲戴王冠,必承其重
展开
-
Python项目——项目优化(Elasticsearch)(一)
Elasticsearch是一个基于Lucene的分布式搜索引擎。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。 Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。根据DB-Engines的排名原创 2022-07-04 00:19:50 · 851 阅读 · 44 评论 -
【django项目后台开发】数据统计——用户总数统计、日增用户数统计、日活跃用户统计(3)
一、用户总数统计1、后端接⼝设计请求⽅式: GET /statistics/total_count/请求参数: 通过请求头传递jwt token数据。返回数据: JSON{ "count": "总⽤户量"}2、后端代码实现from datetime import datefrom rest_framework.permissions import IsAdminUserfrom rest_framework.response import Responsefrom rest_frame原创 2022-06-22 08:32:46 · 2229 阅读 · 54 评论 -
【django项目后台开发】Token和Session的区别、Token的生成方式(1)
一、什么是JWTJson web token (JWT), 是为了在⽹络应⽤环境间传递声明⽽执⾏的⼀种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适⽤于分布式站点的单点登录(SSO)场景。JWT的声明⼀般被⽤来在身份提供者和服务提供者间传递被认证的⽤户身份信息,以便于从资源服务器获取资源,也可以增加⼀些额外的其它业务逻辑所必须的声明信息,该token也可直接被⽤于认证,也可被加密。二、token的认证和传统的session认证的区别1、传统的session认证原创 2022-05-17 10:22:49 · 1151 阅读 · 0 评论 -
【django后台】浏览器同源策略和CORS跨域(1)
一、浏览器的同源策略同源策略是浏览器的⼀个安全功能,不同源的客户端脚本(js⽂件)在没有明确授权的情况下,不能读写对⽅资源。只有同⼀个源的脚本赋予dom、读写cookie、session、ajax等操作的权限。url由协议、域名、端⼝和路径组成,如果两个url的协议、域名和端⼝相同,则这两个url是同源的。举例来说:http://www.example.com/dir/page.html协议是 http://域名是 www.example.com端⼝是 80(默认端⼝可以省略)同源政策的⽬原创 2022-05-16 09:00:21 · 417 阅读 · 0 评论 -
【django】性能优化——页面静态化【37】
一、⻚⾯静态化介绍1、为什么要做⻚⾯静态化减少数据库查询次数。提升⻚⾯响应效率。2、什么是⻚⾯静态化将动态渲染⽣成的⻚⾯结果保存成html⽂件,放到静态⽂件服务器中。⽤户直接去静态服务器,访问处理好的静态html⽂件。二、⾸⻚⻚⾯静态化实现⾸⻚⻚⾯静态化实现步骤1、在newsapp下创建static_index.py⽂件import osfrom django.conf import settingsfrom django.shortcuts import renderfro原创 2022-05-12 08:44:19 · 325 阅读 · 0 评论 -
【django】新闻模块——新闻详情页接口开发【36】
一、新闻详情接⼝设计1、请求⽅式2、请求参数:路径参数3、响应结果:HTMLdetail.html二、新闻详情接⼝定义定义路由from django.urls import path,re_pathfrom . import viewsurlpatterns=[ re_path('^$',views.IndexView.as_view(),name='index'), re_path('^list/(?P<channel_id>\d+)/(?P<pa原创 2022-05-10 08:25:32 · 386 阅读 · 0 评论 -
【django】用户登录模块 之 用户中心-添加邮箱前后端逻辑【35】
一、添加邮箱前端逻辑user_center.jslet vue=new Vue({ el:'#user_center', delimiters:['${','}'], data:{ // v-model email:'', //当前登陆用户的id userid:userid, error_email:false, error_email_msg:'保存邮箱失败!', },原创 2022-05-09 06:53:20 · 430 阅读 · 4 评论 -
【django】用户登录模块实现步骤(三)之QQ用户是否绑定项目用户的处理和QQ用户绑定项目用户功能实现【34】
一、判断openid是否绑定过⽤户使⽤openid查询该QQ⽤户是否在芒果头条中绑定过⽤户。openid已绑定⽤户的处理:如果openid已绑定芒果头条⽤户,直接⽣成状态保持信息,登录成功,并重定向到⾸⻚。openid未绑定⽤户的处理:为了能够在后续的绑定⽤户操作中前端可以使⽤openid,在这⾥将openid签名后响应给前端。openid属于⽤户的隐私信息,所以需要将openid签名处理,避免暴露。openid未绑定用户时,进入这个页面二、itsdangerous的使⽤安装:pip原创 2022-05-09 06:52:33 · 405 阅读 · 0 评论 -
【django】用户登录模块实现步骤(二)之QQ登录工具AgentLogin和通过OAuth2.0认证获取openid【33】
一、QQ登录工具AgentLogin1、AgentLogin介绍⽬前只⽀持 腾讯QQ,微信,微博的第三⽅登录该⼯具封装了QQ登录时对接QQ互联接⼝的请求操作。可⽤于快速实现QQ登录功能。2、AgentLogin安装pip install AgentLogin3、AgentLogin使⽤说明from AgentLogin import AgentLogin获取扫码⻚⾯地址qq_url = AgentLogin.qq_url(client_id, redirect_uri)<a原创 2022-05-08 09:58:22 · 1199 阅读 · 1 评论 -
【django】用户登录模块实现步骤(一)之QQ登录模型类【32】
一、QQ登录流程分析二、⽤户登录QQ登录成功后,我们需要将QQ⽤户和芒果头条⽤户关联到⼀起,⽅便下次QQ登录时使⽤,所以我们选择使⽤MySQL数据库进⾏存储。1、定义QQ登录模型类创建⼀个新的应⽤oauth,⽤来实现QQ第三⽅认证登录。主路由:re_path(r'^oauth/', include('oauth.urls')),在oauth/models.py中定义QQ身份(openid)与⽤户模型类Users的关联关系模型类:from django.db import models原创 2022-05-07 08:34:14 · 455 阅读 · 2 评论 -
【django】新闻模块——Haystack介绍和安装配置与渲染搜索结果页面【31】
提示Elasticsearch 的底层是开源库 Lucene。但是没法直接使⽤ Lucene,必须⾃⼰写代码去调⽤它的接⼝。思考我们如何对接 Elasticsearch服务端?解决⽅案Haystack一、Haystack介绍和安装配置1、Haystack介绍a、Haystack 是在Django中对接搜索引擎的框架,搭建了⽤户和搜索引擎之间的沟通桥梁。我们在Django中可以通过使⽤ Haystack 来调⽤ Elasticsearch 搜索引擎b、Haystack 可以在不修改代码的情原创 2022-05-07 06:44:09 · 838 阅读 · 0 评论 -
【django】新闻模块——全文检索Elasticsearch【30】
一、全⽂检索和搜索引擎原理需求:⽤户通过搜索框中输⼊相应⽂章标题或者正⽂内容即搜索出相应内容。全⽂检索⽅案我们引⼊全⽂检索的⽅案来实现商品搜索。全⽂检索即在指定的任意字段中进⾏检索查询。全⽂检索⽅案需要配合搜索引擎来实现。搜索引擎原理搜索引擎进⾏全⽂检索时,会对数据库中的数据进⾏⼀遍预处理,单独建⽴起⼀份索引结构数据。索引结构数据类似新华字典的索引检索⻚,⾥⾯包含了关键词与词条的对应关系,并记录词条的位置。搜索引擎进⾏全⽂检索时,将关键字在索引数据中进⾏快速对⽐查找,进⽽找到数据的真实存原创 2022-05-06 08:17:15 · 358 阅读 · 0 评论 -
【django】新闻模块——新闻列表展示【29】
一、配置路由from django.urls import path,re_pathfrom . import viewsurlpatterns=[ re_path('^$',views.IndexView.as_view(),name='index'), re_path('^list/(?P<channel_id>\d+)/(?P<page_num>\d+)/$',views.IndexView.as_view())]二、完善视图from djang原创 2022-05-05 06:38:44 · 608 阅读 · 4 评论 -
【django】新闻模块——自定义Django文件存储类 【28】
存在问题⽬前读取⽂章默认图⽚地址group1/M00/00/00/wKgVjV_jT7GAO7pxAAPUTVc4GU8518.png,⻚⾯中⽆法读取?解决⽅案1:在相应img标签上拼接链接。解决⽅案2:⾃定义Django⽂件存储类一、创建⽂件存储类项⽬包⽬录/utils/fastdfs/fdfs_storage.pyfrom django.conf import settingsfrom django.core.files.storage import Storageclass Fas原创 2022-05-05 06:37:57 · 496 阅读 · 0 评论 -
【django】新闻模块——首页导航和类别显示【27】
全局上下文是整站共享的上下文数据实现步骤:1、在子应用下创建mycontext.py文件2、编辑mycontext.py文件3、配置文件中自定义全局上下文4、模板中直接引用新闻首页中的导航栏是公用的一、创建全局上下⽂类from .models import NewsChanneldef get_channels(request): '''获取导航信息''' channels=NewsChannel.objects.order_by('id') return {'原创 2022-05-04 09:49:56 · 1027 阅读 · 2 评论 -
【django】新闻模块——Docker安装运⾏FastDFS【26】
一、Docker安装运⾏FastDFS1、获取FastDFS镜像从仓库拉取镜像$ sudo docker image pull delron/fastdfs解压⽂档中本地镜像$ sudo docker load -i ⽂件路径/fastdfs_docker.tar2、开启tracker容器我们将 tracker 运⾏⽬录映射到宿主机的 /var/fdfs/tracker⽬录中sudo docker run -dit --name tracker --network=host -v /va原创 2022-05-04 09:49:08 · 454 阅读 · 0 评论 -
Docker容器操作【25】
Docker容器操作1.容器列表# 查看正在运⾏的容器$ sudo docker container ls# 查看所有的容器$ sudo docker container ls --all2.创建容器$ sudo docker run [option] 镜像名 [向启动容器中传⼊的命令]常⽤可选参数说明:* -i 表示以《交互模式》运⾏容器。-t 表示容器启动后会进⼊其命令⾏。加⼊这两个参数后,容器创建就能登录进去。即分配⼀个伪终端。–name 为创建的容器命名。-v 表示⽬录映原创 2022-05-03 09:54:29 · 1991 阅读 · 6 评论 -
ubuntu20.04 安装docker (详细版)【24】
一、设置仓库为了设置仓库,需要有几个前置步骤,完成之后才是真正设置仓库,具体如下1、更新 apt 包索引。$ sudo apt-get update2、安装 apt 依赖包,⽤于通过HTTPS来获取仓库$ sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common3、添加 Docker 的官⽅ GPG 密钥$ curl原创 2022-05-03 09:53:45 · 5611 阅读 · 34 评论 -
【django】新闻模块——文件存储方案FastDFS【23】
一、FastDFS介绍1、⽤c语⾔编写的⼀款开源的轻量级分布式⽂件系统。2、功能包括:⽂件存储、⽂件访问(⽂件上传、⽂件下载)、⽂件同步等,解决了⼤容量存储和负载均衡的问题。特别适合以⽂件为载体的在线服务,如相册⽹站、视频⽹站等等。3、为互联⽹量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重⾼可⽤、⾼性能等指标。4、可以帮助我们搭建⼀套⾼性能的⽂件服务器集群,并提供⽂件上传、下载等服务。5、FastDFS架构 包括Client、Tracker server和Storage serv原创 2022-05-02 09:35:39 · 425 阅读 · 2 评论 -
【django】新闻模块——新闻数据表设计和抽象模型类的用法【22】
一、创建模型类from django.db import models# Create your models here.from mgproject.utils.basemodels import BaseModelclass NewsChannel(BaseModel): '''新闻频道''' name=models.CharField(max_length=30,unique=True,verbose_name='频道名称') url=models.CharFiel原创 2022-05-02 09:34:55 · 592 阅读 · 2 评论 -
FastDFS报错 fdfs_client.exceptions.DataError: [-] Error: 28, No space left on device的解决方法
今天使用FastDFS客户端实现⽂件存储的时候出现了一个错误fdfs_client.exceptions.DataError: [-] Error: 28, No space left on device大概意思就是说内存空间不够,这个问题主要的原因是我们所使用的ubuntu用的时间越来越久,所剩的空间越拉越小,而我们的tracker.conf默认配置存储空间为10%,需要将存储空间改为1%保存。所以解决方法有三种1.删除无用的东西2.给硬盘扩容3.修改FastDFS允许存储的空间百分比我使用原创 2022-05-01 08:43:25 · 1545 阅读 · 6 评论 -
【django】用户登录之判断用户是否登录【21】
一、展示⽤户中⼼⻚⾯定义路由from django.urls import path,re_pathfrom . import viewsfrom django.contrib.auth.decorators import login_requiredurlpatterns=[ re_path('^register/$',views.RegisterView.as_view()), re_path('^usernames/(?P<username>[a-zA-Z_]{原创 2022-04-29 06:39:35 · 2546 阅读 · 5 评论 -
【django】用户登录之多账户登录【20】
Django⾃带的⽤户认证后端默认是使⽤⽤户名实现⽤户认证的⽤户认证后端位置:django.contrib.auth.backends.ModelBackend。如果想实现⽤户名和⼿机号都可以认证⽤户,就需要⾃定义⽤户认证后端。一、⾃定义⽤户认证后端步骤1、在userapp应⽤中新建auth.py⽂件2、新建类,继承⾃ModelBackend3、重写认证authenticate()⽅法4、分别使⽤⽤户名和⼿机号查询⽤户5、返回查询到的⽤户实例from django.contrib.aut原创 2022-04-29 06:38:08 · 1339 阅读 · 0 评论 -
【django】用户登录之用户名登录【19】
一、⽤户名登录接⼝设计1、请求⽅式2、请求参数:表单参数3、响应结果:HTML二、定义路由主路由from django.contrib import adminfrom django.urls import path,re_path,includeurlpatterns = [ path('admin/', admin.site.urls), re_path('^',include('userapp.urls')), re_path('^',include(.原创 2022-04-28 08:56:36 · 639 阅读 · 2 评论 -
【django】pipeline操作redis数据库【18】
Redis 的 C / S 架构:基于客户端-服务端模型以及请求/响应协议的TCP服务。客户端向服务端发送⼀个查询请求,并监听Socket返回。通常是以阻塞模式,等待服务端响应。服务端处理命令,并将结果返回给客户端。存在的问题:如果Redis服务端需要同时处理多个请求,加上⽹络延迟,那么服务端利⽤率不⾼,效率降低。解决的办法管道pipeline一、pipeline的介绍管道pipeline可以⼀次性发送多条命令并在执⾏完后⼀次性将结果返回。pipeline通过减少客户端与Redis的原创 2022-04-28 08:54:45 · 569 阅读 · 2 评论 -
【django】用户注册时短信验证码校验、避免频繁发送短信验证码【17】
注册时短信验证后端逻辑原创 2022-04-27 06:35:50 · 1428 阅读 · 0 评论 -
【django】短信验证码接口设计、互亿无线短信平台、后端逻辑、前端逻辑【16】
一、原理图二、短信验证码接⼝设计1、请求⽅式2、请求参数:路径参数和查询字符串3、响应结果:JSON三、短信验证码接⼝定义class SMScodeView(View): def get(self,request,phone): ''' 匹配并删除图形验证码 发送短信验证码 :param request: :param phone: :return: '''原创 2022-04-27 06:34:07 · 1347 阅读 · 0 评论 -
【django】图形验证码接口设计、后端逻辑、前端逻辑【15】
一、原理图将后端⽣成的图⽚验证码存储在redis数据库2号库结构:{‘img_uuid’:‘0594’}二、创建验证码⼦应⽤python ../../manage.py startapp verifications注册子应用INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.session原创 2022-04-26 06:37:28 · 1428 阅读 · 0 评论 -
【django】用户手机号重复注册校验【14】
1、⼿机号重复注册接⼝设计和定义请求⽅式请求参数:路径参数响应结果:JSON2、定义路由和视图主路由from django.contrib import adminfrom django.urls import path,re_path,includeurlpatterns = [ path('admin/', admin.site.urls), re_path('^',include('userapp.urls')), re_path('^',includ.原创 2022-04-25 08:35:31 · 662 阅读 · 7 评论 -
【django】用户退出登录功能实现【13】
1、前端逻辑<div class="top-bar-right"> <ul class="header-user-links"> {% if user.username %} 欢迎您! <span style="font-weight: bolder;">[ {{ user.username }} ]</span>  <a href="/logout/"&原创 2022-04-25 08:34:33 · 1390 阅读 · 2 评论 -
【django】用户重复注册校验功能接口实现【12】
一、⽤户名重复注册接⼝设计和定义1、请求⽅式2、请求参数:路径参数3、响应结果:JSON二、定义路由主路由urlpatterns = [ path('admin/', admin.site.urls), re_path('^',include('userapp.urls')), re_path('^',include(('newsapp.urls','newsapp'),namespace='newsapp'))]子路由from django.urls i.原创 2022-04-24 08:22:12 · 656 阅读 · 2 评论 -
【django】用户注册状态保持、注册成功页面跳转到新闻页功能实现【11】
说明:如果需求是注册成功后即表示⽤户登⼊成功,那么此时可以在注册成功后实现状态保持如果需求是注册成功后不表示⽤户登⼊成功,那么此时不⽤在注册成功后实现状态保持芒果头条的需求是:注册成功后即表示⽤户登⼊成功1. login()⽅法介绍1、⽤户登⼊本质:状态保持将通过认证的⽤户的唯⼀标识信息(⽐如:⽤户ID)写⼊到当前浏览器的cookie 和服务端的 session 中。2、login()⽅法:Django⽤户认证系统提供了login()⽅法。封装了写⼊session的操作,帮助我们快速登⼊原创 2022-04-23 08:26:23 · 773 阅读 · 0 评论 -
【django】用户注册后端逻辑【10】
1、接收参数username=request.POST.get('username','')phone=request.POST.get('phone','')password=request.POST.get('password','')2、校验参数前端校验过的后端也要校验,后端的校验和前端的校验是⼀致的判断参数是否⻬全判断⽤户名是否是5-8位字符判断密码是否是3-8位字符判断⼿机号是否合法#todo 校验参数(完整参数校验、格式校验)#判断参数是否齐全if not all(原创 2022-04-23 08:25:54 · 398 阅读 · 0 评论 -
【django】用户注册接口设计【9】
1、⽤户注册业务逻辑分析2、⽤户注册接⼝设计和定义1、对于接⼝的设计,我们要根据具体的业务逻辑,设计出适合业务逻辑的接⼝。2、设计接⼝的思路:分析要实现的业务逻辑:明确在这个业务中涉及到⼏个相关⼦业务。将每个⼦业务当做⼀个接⼝来设计。分析接⼝的功能任务,明确接⼝的访问⽅式与返回数据:请求⽅法(如GET、POST、PUT、DELETE等)。请求地址。请求参数(如路径参数、查询字符串、表单、JSON等 )。响应数据(如HTML、JSON等)。3、⽤户注册接⼝设计1、请求⽅原创 2022-04-22 06:37:39 · 731 阅读 · 2 评论 -
【django】创建用户模型类【8】
django给我们自带用户模型类,位置在site-package——django——contrib——auth——models.py,1、django自带的用户模型类里面的字段不满足我的需要,需要我自己定义字段,其他的字段直接继承AbstractUser类即可2、自定义用户模型类userapp——models.py文件from django.db import modelsfrom django.contrib.auth.models import AbstractUser# Create原创 2022-04-22 06:37:10 · 366 阅读 · 0 评论 -
【django】展示用户注册页面【7】
1、创建子应用a、项目工程目录下创建文件夹apps,用于存放所有的子应用mgproject-appsb、进入到apps文件下,创建用户子应用python ../../manage.py startapp userapp如图所示c、注册子应用启动项目会报下图错误解决:将apps添加到导包路径中d、接下来启动服务器正常2、创建路由a、创建主路由from django.contrib import adminfrom django.urls import path,re_pa原创 2022-04-21 06:38:33 · 332 阅读 · 0 评论 -
关于 pip install mysqlclent安装失败 ERROR: No matching distribution found for mysqlclient 的解决方案
安装MySQL时运行终端下面命令sudo apt-get install mysql-serverapt-get install mysql-clientsudo apt-get install libmysqlclient-dev接着pip install mysqlclient安装成功原创 2022-01-10 07:00:00 · 764 阅读 · 0 评论 -
解决关于 ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it....报错
mysql> create user 'zhilong'@'%' identified by '123456';ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement解决办法:在命令行输入:mysql> flush privileges;原创 2022-01-10 07:00:00 · 1485 阅读 · 0 评论 -
【django】配置前端静态文件【6】
一、将静态⽂件存放⾄项⽬根⽬录下的static⽂件夹中二、指定静态⽂件加载路径原创 2022-01-09 07:00:00 · 234 阅读 · 0 评论 -
【django】配置项目日志【5】
一、配置项⽬⽇志# 配置项目日志LOGGING = { 'version': 1, 'disable_existing_loggers': False, # 是否禁用已经存在的日志器 'formatters': { # 日志信息显示的格式 'verbose': { 'format': '%(levelname)s %(asctime)s %(module)s %(lineno)d %(message)s' },原创 2022-01-08 13:33:45 · 264 阅读 · 0 评论