Django Vue 搭建相亲网站

news/2024/5/16 8:52:19/文章来源:https://blog.csdn.net/weixin_45625553/article/details/117250603

今天记录一个前后端分离项目,在之前开发过纯django模板语法弄出来的网页系统,也弄出来过VUE加Django混合模板的网页.

django模板语法属于后端直接渲染生成的网页;vue+django生成的则为django的url甩出html网页后,再在网页中请求后端数据,这样弄出来的稍微有些混合,因为变量请求也完全可以用django自带模板实现.而且之前所做的内容,vue的引入均使用cdn链接的方式.

综上,之前所做的内容虽然部分分离,但是离前后端分离还相去甚远.但此时需要明晰一个概念是,前后端分离和前后端不分离两种方式并没有谁优于谁之说,这需要看项目内容及规模,找到最合适的. 

下边进入正题.

配置

电脑:macos

服务器:Centos 7

数据库:Django 自带的sqlit

安装

需要安装两个端,及前端VUE 和后端Django,这部分自行解决,我能提供的就是自己装Vue的时候详细的记录了笔记,笔记链接见linux 和mac下安装node和【vuehttps://blog.csdn.net/weixin_45625553/article/details/108949096】

Pycharm后端

使用pycharm创建项目,同时创建一个app,见截图,这样建好的项目目录下自带了app文件夹,即第二个截图的text01文件夹.

通过查看setting文件可以看到,APP处已经加载了text01这个app.

 

图片

图片

 

因此,如果你不用pycharm,用的其他IDE或者直接终端操作的,也没关系,记得在setting中加上这个app就行,比如我现在创建个text02apppython manage.py startapp text02这样创建也行

 

图片

ok以上说了两种创建APP的方式和加入app支持列表的方法.继续

 

 

数据库设计

前后端分离项目我的理解是,前端渲染,从后端请求数据,因此我们后端得有数据,这样吧,咱们搞个婚恋网站,像百合网世纪佳缘那样的.

设想如下:注册人充值后有5次挑选异性机会,为了简化,这个表格字段如下:apikey \ money \ 网名 \ 性别 \ 城市 \ 年龄 \ 工作 \ 电话 \ 收入 \ 注册时间

因此在text02的model中创建这个表格

 

 
# text02/models.py
from django.db import models
from django.contrib.auth.models import AbstractUser
import datetime
# Create your models here.
class UserProfile(models.Model):"""user"""sex=(('male','男'),('female','女'))APIkey=models.CharField(max_length=30,verbose_name='API Key',default='abcdefg')money = models.IntegerField(default=10,verbose_name='余额')name = models.CharField(max_length=20, verbose_name="网名", default="")sex = models.CharField(choices=sex,max_length= 10, verbose_name="网名", default="")city = models.CharField(max_length=20, verbose_name="城市", default="")age = models.IntegerField(verbose_name="年龄", default="")job = models.CharField(max_length=20, verbose_name="工作", default="")phone = models.CharField(max_length=20, verbose_name="电话", default="")income = models.IntegerField(verbose_name="收入", default="")join_time = models.DateTimeField(default=datetime.datetime.now(), verbose_name='注册时间')class Meta:verbose_name = '注册用户表'verbose_name_plural = verbose_namedef __str__(self):return self.name

 

在text02的admin中注册这个表格

 
# text02/admin
from django.contrib import admin
from .models import UserProfile
# Register your models here.admin.site.register(UserProfile)

在终端中输入下边两条指令,把数据表创建,然后把db.sqlite3文件拖入pycharm的datebase中,可以的看到text02的userprofile创建好了.运行后,去admin页面编辑5条假数据:

 

 
python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser
python manage.py runserver

图片

点击add后添加数据,加好后如下图,随便填,假数据

图片

 

通过apikey可以识别出这个人是谁(造表时候有重复,不要紧,举例而已),money是请求次数.

这个表格中模拟了李雷一个男性,其他都是女性,他的money有4块,因此可以请求浏览4名异性.那么现在开始写这个API.

 

API设计

设计API需要用到restframework以及django-filter,安装一下

 

pip install djangorestframework markdown django-filter

 

安装后,将APP中加入rest_framework

 

在text02文件夹下创建serializers.py文件,内部写入以下代码,将user这个表格序列化,序列化是为了方便编程json传递给前端.

 
from rest_framework import serializers
from .models import UserProfileclass BookModelSerializer(serializers.ModelSerializer):class Meta:model = UserProfilefields="__all__"

在text02的view中写入

 

 
from django.shortcuts import render
from rest_framework.views import APIView
from rest_framework.response import Response
from .models import UserProfile
from .serializers import UserModelSerializer# Create your views here.
class UserAPIView(APIView):"""使用serializer"""def get(self, request, format=None):APIKey = self.request.query_params.get('apikey', 0)print('APIKey',APIKey)users = UserProfile.objects.filter(APIkey=APIKey).first()# print(users)if users:balance = users.moneyprint('balance',balance)if balance > 0:sex = self.request.query_params.get("sex", 0)usersfor = UserProfile.objects.filter(sex=sex)users_serializer = UserModelSerializer(usersfor, many=True)users.money -= 1users.save()return Response(users_serializer.data)else:return Response("兄弟,又到了充钱的时候哦!")else:return Response("查无此人哦")

 

在url中写入

 

结果验证

当apikey输入正确,且money大于0时,请求内容结果:

图片

 

当没钱了,即money<0

 

图片

当apikey输入错误(这里输入的事liloei,应该是lilei)

 

图片

为了在测试前端时不受money小于零后不能调取,可临时把if balance > 0: 改为 if 1:

 

 

VUE前端

首先从终端中通过cd 一路进入到刚刚的后端项目文件中,当然放在别处也行,我只是为了放一块好找然后通过以下三部进行vue项目创建

 

 

$ vue init webpack vue-demo01
$ cd vue-demo01
$ npm run dev

 

这样打开浏览器就有这个项目了。

现在进入文件夹中找到这个文件进行改造。(截图是vscode的预览窗口)

图片

将这个进行VUE语法的改造,通过Axios进行数据请求.演示动图见下方

 

图片

 

至此,前后端分离的小案例就算倒腾完了!

前端代码有点长,关注公众号后回复 vueface 获取前端代码吧。

 

最后提及一个bug,获取五次是指获取5批不同的异性,但现在库里只有这么几个人就没做这么复杂,现在获取5次是获取全部内容5次,因此如果在实际请求5次不同的内容的端口时候,需要进行一定的改造。另外当money没有了的时候,如何充值,这是另外的内容喽,现在就当自己是2008年的网关,充了钱,手动改后台吧!

 

 

欢迎关注公众号:SUMER

原链接:前后端分离实现相亲网站 (qq.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_844022.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序云开发静态网站h5跳小程序

官网&#xff1a;https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/staticstorage/jump-miniprogram.html 详解&#xff1a;https://blog.csdn.net/hlc162181/article/details/113502356 最终实现

在Linux(Ubuntu16.04)上用Django框架建立网站的常用命令

Linux建站常用命令 1. 管理uwsgi&#xff1a; ps aux | grep uwsgi &#xff08;查看uwsgi进程&#xff09;uwsgi --ini uwsgi.ini &#xff08;启动uwsgi&#xff09;uwsgi --stop uwsgi.pid(关闭uwsgi进程) 2. 管理nginx&#xff08;恩金克斯&#xff09;&#xff1a; ps…

项目管理实践【五】自动编译和发布网站【Using Visual Studio with Source Control System to build and publish website autom

作者&#xff1a;Learning and Sharing--张涛的技术博客 转自&#xff1a;http://www.cnblogs.com/ttzhang/archive/2008/11/10/1330321.html 在上一篇教程项目管理实践【三】每日构建【Daily Build Using CruiseControl.NET and MSBuild】 中&#xff0c;我们讲解了如何使用C…

二级域名_高权重网站二级域名的seo实战运用

我们大家都知道&#xff0c;搜索引擎的流量是互联网上最为精准的流量之一&#xff0c;而且是用户主动搜索的流量&#xff0c;所以搜索引擎的流量要比很多其他平台获取到的流量转化率要高很多&#xff0c;因此&#xff0c;在互联网上搜索引擎的流量是在整个网络营销过程中的很重…

linux监控网站命令,Linux中的网络监控命令

监控整体的带宽使用nload命令官网下载地址&#xff1a;http://www.roland-riegel.de/nload/index.html通过YUM也可以安装yun -y install nload参数说明-t设置刷新时间间隔&#xff0c;单位为毫秒&#xff0c;默认500-i设置入站的流量图显示比例&#xff0c;默认10240-o设置出站…

USB 描述符详细解析,来自老外网站,比协议描述清晰

作者&#xff1a;header 转自&#xff1a;http://blog.csdn.net/zongguo/article/details/9322609 来自&#xff1a;http://wiki.osdev.org/Universal_Serial_Bus Universal Serial Bus The Universal Serial Bus was first introduced in 1994 with the intention of replac…

LOGO SEO 强化

前言 在某些网页中&#xff0c;为了能让浏览器更好的搜索到该网页&#xff0c;就会使用logo SEO来提权&#xff01; 代码部分 <div class"logo"><h1><a href"index.html" title"小米商城">小米商城</a></h1>&l…

如何消除网站安全的七大风险

以工作中某项目的安全改善过程为例&#xff0c;分享了常用网站安全性的典型问题和解决对策&#xff0c;希望对网站开发者有借鉴意义。 有过网站开发经验的朋友都知道网站安全是构建网站时必须要考虑的一个因素&#xff0c;网站安全的重点在于服务器的安全配置管理以及程序脚本的…

推荐一些国内外文献检索与免费下载的网站

学会尊重他人的劳动成果-转载来源https://blog.csdn.net/weixin_43795921/article/details/100169662?utm_sourceapp 点击即可打开链接&#xff1a; 1.SCI-Hub 2.CiteSeerX 3.arXiv.org 4.FINDARTICLES 5.scinapse&#xff08;用于检索比较好用&#xff0c;下载不了的在SC…

从运维角度看中大型网站架构的演变之路

一个成熟的网站架构并不是一开始设计就具备高可用、高伸缩、高性能等特性的&#xff0c;它是随着用户量和业务线不断增加&#xff0c;基础架构才逐渐健壮的。在发展初期&#xff0c;一般都是从0到1&#xff0c;不会一上来就整一些大而全的架构&#xff0c;也很少人这么任性。 …

查找会议论文的网站

http://conf.cnki.net/advanceSearch.aspx http://www.allconfs.org/list.asp

python2、python3同时存在,pip安装包后,显示No module named的问题(附加国内镜像网站)

python2、python3同时存在&#xff0c;pip安装包后&#xff0c;显示No module的问题&#xff08;附加国内镜像网站&#xff09; 在电脑中同时安装python2、python3的情况下&#xff0c;明明已经pip相对应的包后&#xff0c;但是使用import相应包时python2可以正常导入&#xf…

免费GIS数据下载网站推荐

&#xfeff;&#xfeff;数据是 GIS 的核心&#xff0c;然而你是不是还在为找不到数据而苦恼呢&#xff1f;本期我们为你挑选了国外十个免费的数据下载网站&#xff0c;赶快去看看吧&#xff01; 1、Natural Earth Data 网址&#xff1a;http://www.naturalearthdata.com/ N…

大型网站系统与JAVA中间件实践 学习总结 一

大型网站系统与JAVA中间件实践 学习总计 一前言一、用 JAVA技术和单机来构建的网站二、将单机系统设定为交易网站三、单机负载警告&#xff0c;数据库与应用分离四、应用服务器负载告警&#xff0c;如何让应用服务器走向集群访问选择问题---引入负载均衡解决session问题Session…

eyoucms网站基本信息设置

后台 — 网站首页 — 页面设置&#xff0c;即可设置。 网站基本信息是贯穿显示在整个网站上的&#xff0c;且其他SEO相关设置也会引用到&#xff0c;主要包含网站名称、关键词和网站描述等设置。 关闭网站&#xff1a;默认选择“否”&#xff0c;如果维护&#xff0c;备案或其…

eyoucms网站基本信息设置

后台 — 网站首页 — 页面设置&#xff0c;即可设置。 网站基本信息是贯穿显示在整个网站上的&#xff0c;且其他SEO相关设置也会引用到&#xff0c;主要包含网站名称、关键词和网站描述等设置。 关闭网站&#xff1a;默认选择“否”&#xff0c;如果维护&#xff0c;备案或其…

eyoucms 到底什么是网站根目录?

对于站长和互联网技术人员而言&#xff0c;网站根目录是一个很常见的概念&#xff0c;弄不明白到底哪一个目录才是根目录的新手也并不少见&#xff0c;今天益吾库就跟大家分享一下到底什么是网站根目录的相关知识。 什么是根目录 顾名思义&#xff0c;根就像树根一样&#xf…

setoolkit克隆网站并抓取账号密码

文章目录setoolkit简介setoolkit克隆站点遇到的问题setoolkit简介 社会工程师工具包&#xff08;The Social-Engineer Toolkit&#xff09;是一个为社会工程设计的开源渗透测试框架。SET有许多自定义攻击向量&#xff0c;允许您快速地进行可信的攻击。SET是TrustedSec有限责任…

eyoucms 网站导航怎么设计?

通常用户第一眼进入网站看到的是首页的图片&#xff0c;其次就是网站的主导航&#xff0c;因此主导航对网站来说至关重要&#xff0c;不仅能够起到很好的指引作用&#xff0c;一个有魅力的导航还能留住用户浏览更多的信息&#xff0c;而且带给用户良好的体验。&#xff0c;那么…