基于Pycharm和Django模型技术的数据迁移

1.配置数据库

在trip_server/settings.py中修改配置:

其格式可访问官网:Settings | Django documentation | Django

1.1 配置数据库

文件地址:trip_server/settings.py

配置前需要创建(NaviCat)个人数据库

"ENGINE": "django.db.backends.mysql"  #数据库驱动

"NAME": "trip_django1" #库名(自设)

"USER": "root"  #登录数据库用户名

"PASSWORD": "888888"  #登录数据库密码(自设)

"HOST": "localhost"  #数据库的ip地址

"PORT": "3306"  #数据库端口号,允许穿过防火墙(默认)

DATABASES = {#默认连接的数据库"default": {"ENGINE": "django.db.backends.mysql","NAME": "trip_django1","USER": "root","PASSWORD": "888888","HOST": "localhost","PORT": "3306",}
}

1.2 引入数据库依赖

文件地址:trip_server/settings.py

from pathlib import Path
#引入数据库依赖
import pymysql
pymysql.install_as_MySQLdb()# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent

2.新建system模块并建立模型

2.1 在终端中建表

python manage.py startapp system

2.2 建立模型

文件地址:system/models.py

from django.db import models
# Create your models here.
#数据库中表的映射类,根据该文件构建及操作数据库
class Slider(models.Model):"轮播图"name = models.CharField('名称',max_length=32)desc = models.CharField('描述',max_length=100, null=True, blank=True)types = models.SmallIntegerField("展现的位置",default=10)img = models.ImageField('图片地址',max_length=255, upload_to='%Y%m/slider')reorder = models.SmallIntegerField('排序字段',default=0,help_text="数字越大越靠前")start_time = models.DateTimeField('生效开始时间',null=True, blank=True)end_time = models.DateTimeField('生效结束的时间',null=True, blank=True)target_url = models.CharField('跳转的地址',max_length=255, null=True, blank=True)is_valid = models.BooleanField('是否有效',default=True)created_at = models.DateTimeField('创建时间',auto_now_add=True)updated_at = models.DateTimeField('修改时间',auto_now=True)
class Meta:db_table = 'system_slider'ordering = ['-reorder']#默认排序规则

2.3 配置system模块

文件地址:trip_server/settings.py

INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles',#Here👇'system.apps.SystemConfig',#Here👆
]

2.4 在数据库中创新列表

在NaviCat中创建mysql表格。

 

2.5 检查运行

python manage.py check

python manage.py makemigrations

python manage.py migrate 

 2.6 配置视图函数

文件地址:system/views.py

创建视图函数,用于返回轮播数据列表【def】

queryset = Slider.objects.filter(is_valid=True):

对数据源(数据库里的数据)进行过滤,相当于在sql语句中加where条件

for item in queryset:

对结果集进行遍历,将数据封装至objects中

return http.JsonResponse(data):

返回一个json格式的对象,json是标准的网络传输数据的格式

return HttpResponse(data)

from django import http
from django.shortcuts import render
from system.models import Slider# Create your views here.
def slider_list(request):#规范响应数据结构data = {'meta':{},'objects':[]}queryset = Slider.objects.filter(is_valid=True)for item in queryset:data['objects'].append({'id': item.id,'img_url': item.img.url,'target_url': item.target_url,'name': item.name})return http.JsonResponse(data)

2.7 暴露地址

该文件用于暴露视图函数的链接地址

path配置具体的函数地址:

参数1:自定义访问地址;

参数2:访问视图函数的位置;

参数3:链接名字。

from django.urls import path
from system import views
#配置访问地址列表
urlpatterns= [path('slider/list/',views.slider_list,name='slider_list')
]

2.8 定义项目的URL路由

将路径'system/'映射到system应用的URL配置。

from django.contrib import admin
from django.urls import path,includeurlpatterns = [path('admin/', admin.site.urls),#here~👇path('system/', include('system.urls')),#here~👆
]

3.设计景点ORM模型

终于联动网页了(*硬撑)

 python manage.py startapp sight

3.1 景点模块数据准备

文件地址:sight/models.py

from django.db import models# Create your models here.
class Sight(models.Model):""" 景点基础信息 """name = models.CharField('名称', max_length=64)desc = models.CharField('描述', max_length=256)main_img = models.ImageField('主图', upload_to='%Y%m/sight/', max_length=256)banner_img = models.ImageField('详情主图', upload_to='%Y%m/sight/', max_length=256)content = models.TextField('详细')score = models.FloatField('评分', default=5)min_price = models.FloatField('最低价格', default=0)province = models.CharField('省份', max_length=32)city = models.CharField('市区', max_length=32)area = models.CharField('区/县', max_length=32, null=True)town = models.CharField('乡镇', max_length=32, null=True)is_top = models.BooleanField('是否为精选景点', default=False)is_hot = models.BooleanField('是否为热门景点', default=False)is_valid = models.BooleanField('是否有效', default=True)created_at = models.DateTimeField('创建时间', auto_now_add=True)updated_at = models.DateTimeField('修改时间', auto_now=True)class Meta:db_table ='sight'ordering = ['-updated_at']

 3.2 配置system模块

文件地址:settings.py

INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','system.apps.SystemConfig',#Here👇'sight.apps.SightConfig'#Here👆
]

 3.3 检查运行

python manage.py check

python manage.py makemigrations

python manage.py migrate 

在NaviCat中刷新后可看到,新创建了的“sight”:

 

3.4 配置视图函数

文件地址:sight/views.py

class SightListView(ListView):#该类用于查询景点列表信息

paginate_by = 5:#初始每页放5条数据

def get_queryset(self): #根据条件查询数据

query = Q(is_valid=True)  #重写查询方法:1. Q查询条件:该对象可以拼接多个条件 2. is_valid=True:表中is_valid列,有值则被查询出来

----------------><----------------

def render_to_response(self, context, **response_kwargs):

def render_to_response:用于响应数据;

context类的上下文对象:

记录类的属性列表,其中包含了ListView子类SightList的所有属性及数据

page_obj = context['page_obj']:#利用上下文对象获取页面信息

from django.shortcuts import render
from django import http
from django.db.models import Q
from django.views.generic import ListView
from sight.models import Sight# Create your views here.
class SightListView(ListView):paginate_by = 5def get_queryset(self):query = Q(is_valid=True)#1.获得热门景点is_hot = self.request.GET.get('is_hot',None)if is_hot:query = query & Q(is_hot=True)#2.获得精选景点is_top = self.request.GET.get('is_top',None)if is_top:query = query & Q(is_top=True)#3.景点名称搜索queryset = Sight.objects.filter(query)return querysetdef render_to_response(self, context, **response_kwargs):page_obj = context['page_obj']#合成响应数据data = {'meta':{'total_count':page_obj.paginator.count,'page_count':page_obj.paginator.num_pages,'current_page':page_obj.number,},'objects':[],}for item in page_obj.object_list:data['objects'].append({'id':item.id,'name':item.name,'main_img':item.main_img.url,'min_price':item.min_price,'score':item.score,'province':item.province,'city':item.city,'comment_count':0})return http.JsonResponse(data)

3.5 暴露地址

文件地址:sight/urls.py

from django.urls import path
from sight import viewsurlpatterns = [path('/sight/list/', views.SightListView.as_view(), name='sight_list')
]

3.6 定义项目的URL路由 

文件地址:trip_server/urls.py

from django.contrib import admin
from django.urls import path,includeurlpatterns = [path('admin/', admin.site.urls),path('system/', include('system.urls')),#here~👇path('sight',include('sight.urls')),#here~👆
]

3.7 运行

端口号:http://localhost:8000/

4.Apifox

3.1 新建项目:

3.2 新建目录

3.3 填写端口号

3.4 输出结果

参数名可调,如page页数等;参数值1,即第1页。

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

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

相关文章

java访问华为网管软件iMaster NCE的北向接口

最近做的一个项目&#xff0c;需要读取华为一个叫iMaster NCE的网管软件的北向接口。这个iMaster NCE&#xff08;以下简称NCE&#xff09;用于管理项目的整个网络&#xff0c;尤其是光网络。业主要求我们访问该软件提供的对外接口&#xff0c;读取一些网络信息&#xff0c;比如…

InstructIR: High-Quality Image Restoration Following Human Instructions 论文阅读笔记

这是Radu大佬所在的Wrzburg大学的computer vision lab实验室发表在ECCV2024上的一篇论文&#xff0c;代码开源。文章提出了一种文本引导的All-in-One的restoration模型&#xff0c;如下图所示&#xff1a; 这个工作其实跟"InstructPix2Pix: Learning to Follow Image Edit…

【实用教程】.NET C# PDF 生成技术:哪种方法适合您的项目?

概述&#xff1a;本文介绍了 TX Text Control 真正的 WYSIWYG&#xff08;所见即所得&#xff09;模板系统所带来的独特优势&#xff0c;与传统的 PDF 生成系统&#xff08;如 HTML 到 PDF 转换器或需要自定义编程的 PDF 库&#xff09;相比&#xff0c;模板是可视化设计的&…

notepad++ compare插件的离线下载和安装

一、离线安装 去改地址找到最新的插件&#xff1a;https://github.com/notepad-plus-plus/nppPluginList/blob/master/doc/plugin_list_x64.md下载之后复制到插件文件夹&#xff0c;插件文件夹的打开方式如下 注意目录&#xff1a; 二、问题汇总 &#xff08;1&#xff09…

echarts地图,柱状图,折线图实战

1.地图 <template><div style"height: 100%;" class"cantainerBox"><div class"top"><div class"leftTop"><span class"firstSpan">推广进度</span><div>省份选择&#xff1a;&l…

HTB:Cicada[WriteUP]

目录 连接至HTB服务器并启动靶机 使用nmap对靶机进行开放端口扫描 使用nmap对靶机开放端口进行脚本、服务信息扫描 首先尝试空密码连接靶机SMB服务 由于不知道账户名&#xff0c;这里我们使用crackmapexec对smb服务进行用户爆破 通过该账户连接至靶机SMB服务器提取敏感信…

张嘉译王海燕婚姻告急?17年长跑终落幕,真相究竟如何?

娱乐圈又一对金童玉女分道扬镳&#xff1f;在这个瞬息万变的娱乐圈里&#xff0c;爱情似乎总是来得快去得也快。近日&#xff0c;一则关于实力派演员张嘉译与妻子王海燕结束17年婚姻长跑的消息&#xff0c;如同一颗重标题&#xff1a;&#x1f494;张嘉译王海燕婚姻告急&#x…

我的电视 左侧列表内置版 | 非常高清,频道丰富的电视直播应用

我的电视是一款专注于电视直播的应用程序&#xff0c;提供丰富且全面的电视频道&#xff0c;包括央视及各大卫视。无论您是想看新闻、体育、电影还是综艺节目&#xff0c;都可以在这里找到。应用支持高清画质播放&#xff0c;确保流畅无卡顿的观看体验。简洁的界面设计和智能推…

Conmi的正确答案——在Kibana中进入Elasticsearch的索引管理页面

Elasticsearch版本&#xff1a;7.17.25 Kibana版本&#xff1a;7.17.25 注&#xff1a;索引即类似mysql的表。 0、进入首页 1、未创建任何“索引模式”时&#xff1a; 1.1、点击左边的三横菜单&#xff1b; 1.2、点击“Discover”&#xff0c;进入“发现”页面&#xff1b; 2…

在线体验Sketch中文版,免费下载即刻上手!

Sketch是一款轻量而高效的矢量设计工具&#xff0c;助力全球设计师创造了诸多惊艳作品。安装Sketch的优势主要体现在其矢量编辑、控件和样式功能上。而下载安装“Sketch中文版”即时设计同样出色&#xff0c;它作为一站式设计平台&#xff0c;功能更全面。即时设计拥有纯中文的…

aws(学习笔记第九课) 使用AWS的网络存储EBS

aws(学习笔记第九课) 使用AWS的网络存储EBS 学习内容&#xff1a; 使用AWS的网络存储EBS 1.使用AWS的网络存储EBS EBS是什么 EBS是aws Elastic Block Store的缩写&#xff0c;就是AWS的弹性数据块存储。EBS有如下特点。 它不属于EC2的一部分&#xff0c;独立存在。可以独立存…

DAY67WEB 攻防-Java 安全JNDIRMILDAP五大不安全组件RCE 执行不出网

知识点&#xff1a; 1、Java安全-RCE执行-5大类函数调用 2、Java安全-JNDI注入-RMI&LDAP&高版本 3、Java安全-不安全组件-Shiro&FastJson&JackJson&XStream&Log4j Java安全-RCE执行-5大类函数调用 Java中代码执行的类&#xff1a; Groovy Runti…

11-Python基础编程之错误和异常

Python基础编程之错误和异常 概念错误异常 常见的系统异常异常的解决预防捕捉处理异常with语句 手动抛出异常自定义异常 概念 错误 可以通过代码进行修复&#xff1b; 异常 需要提前考虑&#xff0c;设定限制条件&#xff1b;不能通过代码进行修复&#xff1b; 常见的系…

鸿蒙开发融云demo发送图片消息

鸿蒙开发融云demo发送图片消息 融云鸿蒙版是不带UI的&#xff0c;得自己一步步搭建。 这次讲如何发送图片消息&#xff0c;选择图片&#xff0c;显示图片消息。 还是有点难度的&#xff0c;好好看&#xff0c;好好学。 一、思路&#xff1a; 选择图片用&#xff1a;photoVie…

Linux工具(yum/apt,vim)

yum(或apt) Linux中常见的软件的安装方式 : 1. yum/apt 2. rpm 安装包安装 3. 源码安装 yum/apt相当于手机中的各种应用管家 vim指令 vim是一个多模式的编辑器,只用于写代码 刚进入vim默认是命令模式 想要在vim中写代码,必须要进入插入模式 想要退出vim首先必须进入底行…

Java设计模式之代理模式(一)

什么是代理&#xff1f;可以理解为其他对象提供一种代理以控制对这个对象的访问。 举个例子&#xff0c;生活中的外卖平台&#xff0c;店铺是制作外卖的&#xff0c;然后放到平台上售卖。这里的店铺就是真实角色&#xff0c;为了能够让店铺不用担心销售等问题&#xff0c;从而…

各类素材网站下载主题源码 CeoDocs v3.6 开心版

WordPress付费办公素材下载主题 – 各类素材网站下载主题 CeoDocs_v3.6_开心版CeoDocs主题是一款轻量级、 且简洁大气、付费素材下载类型主题&#xff0c;定位于办公素材行业&#xff0c;当然也适用于办公文档、PPT模板、设计素材、 图片素材、音效素材、视频素材各类素材网站…

巨好看的登录注册界面源码

展示效果 源码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name"viewport" content"widthdevic…

Redis-发布/订阅交互模式

文章目录 一、消息代理介绍二、Redis中客户端、服务器之间的交互模式介绍三、Redis发布/订阅交互模式的操作 一、消息代理介绍 “消息代理”&#xff08;Message Broker&#xff09;是一种软件组件&#xff0c;它在不同的应用程序之间传递消息。在Redis的上下文中&#xff0c;…

利用Kubernetes原生特性实现简单的灰度发布和蓝绿发布

部分借鉴地址: https://support.huaweicloud.com/intl/zh-cn/bestpractice-cce/cce_bestpractice_10002.html 1.原理介绍 用户通常使用无状态负载 Deployment、有状态负载 StatefulSet等Kubernetes对象来部署业务&#xff0c;每个工作负载管理一组Pod。以Deployment为例&#x…