django前端引用数据_「基于Python技术的智慧中医商业项目」Django前端网站篇-5.资讯的数据交互...

news/2024/5/20 21:07:17/文章来源:https://blog.csdn.net/weixin_39602569/article/details/111677477

3c3562790f64f5d64e59100c78c14e53.png

如果你对中医感兴趣欢迎留言讨论,觉得我的内容对你有帮助的话,能够请我喝一杯沪上阿姨不禁万分感谢。

内容简介

本章介绍Django搭建中医网站项目平台前端建设之资讯模块的数据交互的内容。其中由于代码量较大,因此部分模块代码举例说明,自己根据实际需要进行修改即可。

创建新闻内容应用模块

进入文件根目录执行命令创建应用

cd TCM_Web
python manage.py startapp article

将创建好的应用文件夹移动到目录的apps下即可

配置新闻应用模块

在settings.py文件中修改

INSTALLED_APPS = [...# 添加文章应用'article',

编写应用中的文件实现数据内容定义

不需要修改该的文件

  1. admin.py 这个我们使用xadmin代替的原有版本的admin,因此这个文件不需要修改该
  2. apps.py 应用的配置文件,不需要动
  3. test.py 测试执行脚本,不需要动
  4. models.py 这里不创建任何内容所以无视

views.py

通过Views视图的方式实现前端提交的事件后台通过API接口交互的方式进行数据读取,传输到前台进行展示

1.基础数据信息

import random
import requests
from django.utils import timezone
from urllib import parse
from django.shortcuts import render
from urllib.parse import urljoin
from django.http import HttpResponse
from django.core.mail import send_mail
from home.models import *
from user.models import *
import json
from django.views.generic.base import View# 设置每页显示数据的最大条数
PAGESIZE = 10# 将之前做好的API接口数据进行拼接 根据实际需要进行删减
url_name = 'http://127.0.0.1'  # 部署到服务器上修改成你的IP地址
ArticleCategoryList = url_name + "/ArticleCategoryList/"
ArticleItemList = url_name + "/ArticleItemList/"
ArticleTagList = url_name + "/ArticleTagList/"
ArticleInfoList = url_name + "/ArticleInfoList/"
ArticleContentList = url_name + "/ArticleContentList/"
ArticleIndexInfoList = url_name + "/ArticleIndexInfoList/"
ArticleChannelInfoList = url_name + "/ArticleChannelInfoList/"
DataCategoryList = url_name + "/DataCategoryList/"
DataSortList = url_name + "/DataSortList/"
WMDiseaseTypeList = url_name + "/WMDiseaseTypeList/"
WMDiseaseInfoList = url_name + "/WMDiseaseInfoList/"
WMDataInfoList = url_name + "/WMDataInfoList/"
TCMDiseaseTypeList = url_name + "/TCMDiseaseTypeList/"
TCMDiseaseInfoList = url_name + "/TCMDiseaseInfoList/"
TCMDataInfoList = url_name + "/TCMDataInfoList/"
TCMTermsTypeList = url_name + "/TCMTermsTypeList/"
TCMTermsInfoList = url_name + "/TCMTermsInfoList/"
DataInfoTermsList = url_name + "/DataInfoTermsList/"
TCMCropsTypeList = url_name + "/TCMCropsTypeList/"
TCMCropsInfoList = url_name + "/TCMCropsInfoList/"
DataInfoCropsList = url_name + "/DataInfoCropsList/"
CTFTypeList = url_name + "/CTFTypeList/"
CTFInfoList = url_name + "/CTFInfoList/"
DataInfoCTFList = url_name + "/DataInfoCTFList/"
TCMFoodSourceList = url_name + "/TCMFoodSourceList/"
TCMFoodTypeList = url_name + "/TCMFoodTypeList/"
TCMFoodInfoList = url_name + "/TCMFoodInfoList/"
DataInfoTCMFoodList = url_name + "/DataInfoTCMFoodList/"
OtherProjectList = url_name + "/OtherProjectList/"
AdvertisingBannerList = url_name + "/AdvertisingBannerList/"

2.数据读取方式

通过python的爬虫思路可以使用request方式进行API数据读取,使用json进行数据的解析传输

"""使用request方法进行数据获取"""
def GetData(url_, data=None):try:if data:data = '?' + parse.urlencode(data)url = urljoin(url_, data)html = requests.get(url)else:html = requests.get(url_)ReturnData = json.loads(html.text)  # 将获取的字符串数据数据处理成json格式except Exception as e:ReturnData = {'result': e, 'code': e, 'msg': '请求api数据错误!', 'data': '{}', 'redirect_url': ''}return ReturnData

3.配置全局变量

这里要在settings.py中配置对应内容增加

TEMPLATES = [{......'OPTIONS': {'context_processors': [......'article.views.GlobalVariable', # 新增全局变量],}},},
]

views.py

"""配置全局加载变量数据即无论打开那个网页都会加载的数据内容"""
def GlobalVariable(request):category_list = GetData(ArticleCategoryList)  # 一级类别items_list1 = GetData(ArticleItemList)[:8]  # 健康类新闻栏目较多拆成3列items_list2 = GetData(ArticleItemList)[8:16]  # 健康类新闻栏目较多拆成3列items_list3 = GetData(ArticleItemList)[16:]  # 健康类新闻栏目较多拆成3列items_list = GetData(ArticleItemList)  # 健康类数据栏目tags_list = random.sample(GetData(ArticleTagList), 5)  # tagproject_list = GetData(OtherProjectList)  # 其他工程banner_list = GetData(AdvertisingBannerList)  # banner轮播user = request.user  # 检测当前访问用户ArticleIndexInfo = GetData(ArticleIndexInfoList)  # 获取主页展示的新闻内容数据return locals()

4.网站主页的数据传输展示和订阅功能

"""主页的功能和index的文章文章列表"""
def HomeIndex(request):# 用户信息提交数据反馈功能,使用邮件自动回复实现,这里需要js实现url访问提交,暂未实现(对应html中class="newsletter")if request.method == 'POST':email = request.POST.get('email')subject = "感谢您对Mr.数据杨中医网站的数据的订阅"message = "后续会给您发送订阅邮件"SubscribeEmail_data = SubscribeEmail()SubscribeEmail_data.email = emailSubscribeEmail_data.save()send_mail(subject, message, '33034782@qq.com', [email], fail_silently=False)return HttpResponse("感谢您的订阅")# 加载主页新闻数据列表信息ArticleIndexInfo = GetData(ArticleIndexInfoList)return render(request, 'WebStation/web_home_index.html', locals())

5.不同类别的新闻数据的传输展示

"""新闻类别channel的文章列表"""
def ArticleChannelList(request):CategoryName = request.GET.get('ChannelCategory')ItemName = request.GET.get('ChannelItem')Page = int(request.GET.get('page', 1))data = {"item__item_name": ItemName, "page": Page, "ordering": '-info_slug', }article_list = GetData(ArticleChannelInfoList, data)return render(request, 'WebStation/web_article_channel.html', locals())

6.新闻Tag标签的数据传输展示

"""新闻tag标签列表"""
def ArticleTagInfoList(request):TagName = request.GET.get('tag_name')Page = int(request.GET.get('page', 1))data = {"tags__tag_name": TagName, "page": Page}article_list = GetData(ArticleInfoList, data)["results"]return render(request, 'WebStation/web_article_tag.html', locals())

7.通用文章详情的数据传视展示

"""通用文章详情"""
def ArticleDetail(request):article_type = request.GET.get('article_type')  # 获取主页文章类型执行对应数据库InfoSlug = request.GET.get('info_slug')  # 从前端页面获取文章的info_slug唯一标识article_type_dict = {"index": ArticleIndexInfoList,  # 主页文章"channel": ArticleChannelInfoList, # 频道文章"all":ArticleInfoList # 全部文章}url_ = article_type_dict[article_type]url_ = urljoin(url_, InfoSlug)  # 拼接API接口可以返回文章详细内容的linkarticle_info = GetData(url_)  # 通过request的方式获取文章的详情信息key_words = eval(article_info["key_words"])  # 提取关键词字段生成可以遍历的list# 记录用户阅读文章信息try:read_article = UserNewsRead()read_article.username_id = request.user.idread_article.article_slug = InfoSlugread_article.add_time = timezone.now()read_article.save()except:pass# 判断用户是否收藏该文章返回结果,未收藏为空has_fav = UserNewsFav.objects.filter(username_id=request.user.id, article_slug=InfoSlug)return render(request, 'WebStation/web_article_detail.html', locals())

8.知识库数据栏目数据传输展示

"""知识库数据每个栏目列表"""
def DataInfoList(request):ChannelItem = request.GET.get('ChannelItem')# 知识库的列表信息,这里根据后台数据管理的内容增减 info_list_dict,info_type_dictinfo_list_dict = {"中医辞典": DataInfoTermsList,"中医药材": DataInfoCropsList,"中国传统节日": DataInfoCTFList,"药食同源": DataInfoTCMFoodList,"西医疾病": WMDataInfoList,"中医疾病": TCMDataInfoList,}info_type_dict = {"中医辞典": TCMTermsTypeList,"中医药材": TCMCropsTypeList,"中国传统节日": CTFTypeList,"药食同源": TCMFoodTypeList,"西医疾病": WMDiseaseTypeList,"中医疾病": TCMDiseaseTypeList,}info_url = info_list_dict[ChannelItem]type_url = info_type_dict[ChannelItem]Page = int(request.GET.get('page', 1))data_info_list = GetData(info_url)["results"]  # 获取数据对应类别内容的列表data_type_list = GetData(type_url)["results"]  # 获取数据对应类别的列表return render(request, 'WebStation/web_data_info.html', locals())

9.每个知识库详情页的数据传输展示

"""知识库数据每个栏目列表"""
def DataInfoList(request):ChannelItem = request.GET.get('ChannelItem')# 知识库的列表信息,这里根据后台数据管理的内容增减 info_list_dict,info_type_dictinfo_list_dict = {"中医辞典": DataInfoTermsList,"中医药材": DataInfoCropsList,"中国传统节日": DataInfoCTFList,"药食同源": DataInfoTCMFoodList,"西医疾病": WMDataInfoList,"中医疾病": TCMDataInfoList,}info_type_dict = {"中医辞典": TCMTermsTypeList,"中医药材": TCMCropsTypeList,"中国传统节日": CTFTypeList,"药食同源": TCMFoodTypeList,"西医疾病": WMDiseaseTypeList,"中医疾病": TCMDiseaseTypeList,}info_url = info_list_dict[ChannelItem]type_url = info_type_dict[ChannelItem]Page = int(request.GET.get('page', 1))data_info_list = GetData(info_url)["results"]  # 获取数据对应类别内容的列表data_type_list = GetData(type_url)["results"]  # 获取数据对应类别的列表return render(request, 'WebStation/web_data_info.html', locals())

10.知识库每个栏目类型的传输展示

"""知识库数据每个栏目列表"""
def DataInfoList(request):ChannelItem = request.GET.get('ChannelItem')# 知识库的列表信息,这里根据后台数据管理的内容增减 info_list_dict,info_type_dictinfo_list_dict = {"中医辞典": DataInfoTermsList,"中医药材": DataInfoCropsList,"中国传统节日": DataInfoCTFList,"药食同源": DataInfoTCMFoodList,"西医疾病": WMDataInfoList,"中医疾病": TCMDataInfoList,}info_type_dict = {"中医辞典": TCMTermsTypeList,"中医药材": TCMCropsTypeList,"中国传统节日": CTFTypeList,"药食同源": TCMFoodTypeList,"西医疾病": WMDiseaseTypeList,"中医疾病": TCMDiseaseTypeList,}info_url = info_list_dict[ChannelItem]type_url = info_type_dict[ChannelItem]Page = int(request.GET.get('page', 1))data_info_list = GetData(info_url)["results"]  # 获取数据对应类别内容的列表data_type_list = GetData(type_url)["results"]  # 获取数据对应类别的列表return render(request, 'WebStation/web_data_info.html', locals())

11.用户阅读记录数据的传输和展示

"""知识库数据每个栏目列表"""
def DataInfoList(request):ChannelItem = request.GET.get('ChannelItem')# 知识库的列表信息,这里根据后台数据管理的内容增减 info_list_dict,info_type_dictinfo_list_dict = {"中医辞典": DataInfoTermsList,"中医药材": DataInfoCropsList,"中国传统节日": DataInfoCTFList,"药食同源": DataInfoTCMFoodList,"西医疾病": WMDataInfoList,"中医疾病": TCMDataInfoList,}info_type_dict = {"中医辞典": TCMTermsTypeList,"中医药材": TCMCropsTypeList,"中国传统节日": CTFTypeList,"药食同源": TCMFoodTypeList,"西医疾病": WMDiseaseTypeList,"中医疾病": TCMDiseaseTypeList,}info_url = info_list_dict[ChannelItem]type_url = info_type_dict[ChannelItem]Page = int(request.GET.get('page', 1))data_info_list = GetData(info_url)["results"]  # 获取数据对应类别内容的列表data_type_list = GetData(type_url)["results"]  # 获取数据对应类别的列表return render(request, 'WebStation/web_data_info.html', locals())

12.用户收藏功能数据的传输展示

"""用户收藏信息列表"""
class UserFavArticleListView(View):def get(self, request):if not request.user.is_authenticated:return HttpResponse('{"status":"fail", "msg":"用户未登录"}', content_type='application/json')user = UserNewsFav.objects.filter(username_id=request.user.id).values("article_slug").order_by("article_slug").distinct()article_data = []for i in user:articles_url = ArticleInfoList + i["article_slug"]article_list = GetData(articles_url)article_data.append(article_list)article_list = article_data[-10:]return render(request, 'WebStation/web_article_channel.html', locals())

urls.py配置

在urlpatterns注册我们的url信息

from django.contrib import admin
from django.urls import path, re_path, include
from article.views import *
from user.views import *
from home.views import *
from django.views.decorators.csrf import csrf_exempt
import xadmin
from xadmin.plugins import xversionxadmin.autodiscover()  # xversion模块自动注册需要版本控制的 Model
xversion.register_models()
urlpatterns = [......# 主页详情列表和详情内容re_path(r'^$', HomeIndex, name='HomeIndex'),# 文章详情path('ArticleDetail/', ArticleDetail, name='ArticleDetail'),# 新闻内容每个频道详情列表和详情内容path('ArticleChannelList/', ArticleChannelList, name='ArticleChannelList'),path('ArticleTagInfoList/', ArticleTagInfoList, name='ArticleTagInfoList'),# 知识库内容每个类别的列表和详情内容path('DataInfoList/', DataInfoList, name='DataInfoList'),path('DataInfoDetail/', DataInfoDetail, name='DataInfoDetail'),path('DataTypeList/', DataTypeList, name='DataTypeList'),# 用的浏览记录和收藏记录path('UserFavArticleList/', UserFavArticleListView.as_view(), name="UserFavArticleList"),  # 文章收藏path('UserReadArticleList/', UserReadArticleListView.as_view(), name="UserReadArticleList"),  # 文章浏览
]

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

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

相关文章

干货 | NLP、知识图谱教程、书籍、网站、工具...(附资源链接)

来源:人工智能头条本文多资源,建议阅读收藏。本文整理了关于 NLP 与知识图谱的众多参考资源,涵盖内容与形式非常丰富。[ 导读 ]本文作者一年前整理了这份关于 NLP 与知识图谱的参考资源,涵盖内容与形式也是非常丰富,接…

干货收藏 | 计算机学习绝对不能错过的10大网站(内附网站链接)

作者:肖镇东本文共2071字,建议阅读5分钟。本文整理出大数据和人工智能领域最实用,质量最高的10大技术网站信息,既可以用于丰富技术知识,也可以用于学术研究。[ 导读 ]随着AI,大数据这些技术的快速发展&…

程序员放大招教你网站怎么做短信验证码防刷验证码机制-速码云

文章来源:http://www.4006026717.com 在我们开始发送了 短信验证码 的时候在前台中会出现一分钟的倒计时,进行了这个操作了之后,在这段时间之内,如果用户多次提交的话是无法发送请求的。这种的方法是最为经常使用的一种&#xff0…

Spring Boot 搭载属于你的网站框架(一)

Spring Boot 搭载你的网站框架(本次demo演示 使用工具 idea) 使用springboot优点,简单快速便捷,只需要管理好pom文件,构建一个新项目是非常快的。 而且内置tomcat,用命令 java -jar jar包路径 的形式启动网…

没想到,阿里工程师每天必刷的网站是......

阿里人每日必逛的神奇内网 阿里内外是阿里内部员工使用的企业运行与协作平台。它诞生于2013年,彼时只是一个门户和企业社交的入口。但经过3年发展,阿里内外实现了平台化运营,不仅接入众多阿里应用与系统,阿里的生态公司也开始享受…

如何成为SEO专家(10步指南)

如何成为SEO专家(10步指南) 您想了解如何增加流量并获得更高的关键字排名,从而为您的网站带来更多销售和收入吗?那么你应该学习有关SEO的一切知识并成为SEO专家。 拥有SEO专业知识并不是SEO专业人士的唯一特权。任何想要学习如何自…

linux+xampp搭建WordPress个人网站过程详解

建站准备 建站流程 搭建网站注意事项可以参考以下文章 如何从零开始拥有自己的网站?新手建站十大必知忠告超详细新手建站指南以及预算成本估计注册域名 我是在阿里云万网上注册的域名:注册域名详情地址 。不懂这一步的可以参考建站流程里面的几篇文章。 …

jQuery Mobile手机网站案例

jQuery Mobile手机网站案例 一、总结 一句话总结&#xff1a;jQuery Mobile是纯手机框架&#xff0c;和amazeui和bootstrap都可以做手机网站。 1、另一款文本编辑器&#xff1f; jd编辑器 二、jQuery Mobile手机网站案例 1、index.php 1 <?php 2 include common/config.php…

PrestaShop 网站后台配置(三)

转载请注明出处&#xff1a;http://www.cnblogs.com/zhong-dev/p/4942957.html 网店版本 v1.6这一篇文章主要介绍 前台显示模块 的调整1&#xff1a;top banner&#xff08;首页横幅&#xff09;如上图&#xff0c;这个是首页横幅展示&#xff0c;其实是一个模块。在后台的模块…

怎样将优酷网站下载的视频KUX转MP4格式

在休息之余&#xff0c;相信大多数人都会拿手机看电视剧听音乐之类的&#xff0c;最近拍了很多的新片子&#xff1a;《毒液&#xff1a;致命守护者》、《无名之辈》、《亡命救赎》《影》等等优质电影&#xff0c;但是很多的电影都只能在电影院观看的&#xff0c;如果不去电影院…

40 个科研学术网站,赶紧来收藏一波!

关注上方“深度学习技术前沿”&#xff0c;选择“星标公众号”&#xff0c;资源干货&#xff0c;第一时间送达&#xff01;来源&#xff1a;中外学术情报编译&#xff1a;程序员大白科研工作者每天日常莫过于看文献、做实验、写论文。人生最郁闷的事情不过于是导师说&#xff0…

百度搜索关键字如何排名?“网站SEO”告诉你答案

作者 | 哪吒来源 | 程序员小灰&#xff08;ID&#xff1a;chengxuyuanxiaohui&#xff09;前言什么是SEO呢&#xff1f;SEO是Search Engine Optimization&#xff0c;意为“搜索引擎优化”&#xff0c;一般简称为搜索优化。对于SEO的主要工作就是通过了解各类搜索引擎如何抓取互…

如何在网站上同步查看BCH数据

当涉及到数字货币网络和市场时&#xff0c;有很多数据和资料需要同步。对于比特币现金&#xff08;BCH&#xff09;来说&#xff0c;值得庆幸的是现在还有许多专用的BCH数据网站&#xff0c;这些网站可轻松理解网络统计数据和市场指标的直观表示。 在早期&#xff0c;很难找到…

如何在网站上同步查看BCH数据

当涉及到数字货币网络和市场时&#xff0c;有很多数据和资料需要同步。对于比特币现金&#xff08;BCH&#xff09;来说&#xff0c;值得庆幸的是现在还有许多专用的BCH数据网站&#xff0c;这些网站可轻松理解网络统计数据和市场指标的直观表示。 在早期&#xff0c;很难找到…

为你的网站使用paypal

原文地址&#xff1a;http://www.codeproject.com/aspnet/UsePayPalPaymentInASPNET.asp Introduction Those who create commercial sites are faced with the question, "How should it receive payments?" One of the most popular payment systems in the world…

TP5实现支付宝电脑网站支付学习笔记

这两天在公司做一个小型WEB项目,需要有支付功能。第一次做支付宝的支付&#xff0c;踩了点小坑&#xff0c;还算顺利。激动的我赶紧记下实现的流程。第一步当然是在支付宝开放平台申请公钥私钥APPID等&#xff0c;支付宝关官方文档都有详细介绍&#xff0c;这里就省略。申请完了…

视频直播网站开发千万不能忘的一个知识点

对于视频直播网站开发的技术人员来讲&#xff0c;音视频即时通讯技术是需要熟练掌握的。毕竟像直播这样重视互动和实时性的应用场景&#xff0c;即时通讯可以从中起到很大的配合作用。目前市面上有很多服务商所提供的SDK可以帮助实现这一技术&#xff0c;但是在选择哪一家服务商…

基于SSH的在线音乐点评网站-java在线音乐点评网站

基于SSH的在线音乐点评网站-java在线音乐点评网站 开发环境&#xff1a;Eclipse for J2EE,MYSQL5.1,JDK1.7,Tomcat 7首页主要展示一些最新的音乐专辑。(1)用户注册&#xff1a;用户填写注册账号、密码。(2)用户登录&#xff1a;用户注册成功后&#xff0c;使用注册账号、密码登…

PrestaShop 网站漏洞修复办法

PrestaShop网站的漏洞越来越多&#xff0c;该网站系统是很多外贸网站在使用的一个开源系统&#xff0c;从之前的1.0初始版本到现在的1.7版本&#xff0c;经历了多次的升级&#xff0c;系统使用的人也越来越多&#xff0c;国内使用该系统的外贸公司也很多&#xff0c;PrestaShop…

分享7个我常去的国外AjaxJquery网站

经常逛这些国外的网站&#xff0c;看到很不错的控件和Jquery的演示DEMO:今天拿出来和大家分享一番: Ajax Rain&#xff1a;http://www.ajaxrain.com/ AjaxRain有很多完美整合AJAX, CSS, DHTML 或 Javascript的实例&#xff0c;有一些Demo的确值得你去看一看 Ajax Daddy:http://…