当前位置: 首页 > news >正文

基于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页。

相关文章:

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

1.配置数据库 在trip_server/settings.py中修改配置&#xff1a; 其格式可访问官网&#xff1a;Settings | Django documentation | Django 1.1 配置数据库 文件地址&#xff1a;trip_server/settings.py 配置前需要创建&#xff08;NaviCat&#xff09;个人数据库 "…...

乐尚代驾-----Day10(订单三)

hi UU 们&#xff01;&#xff01;&#xff01;我又来跟辛辣&#xff01;感谢你们的观看&#xff0c;话不多说&#xff01;~ 司机到达代驾终点&#xff0c;代驾结束了。结束代驾之后&#xff0c; – 获取额外费用&#xff08;高速费、停车费等&#xff09; – 计算订单实际里程…...

105. 聚光源SpotLight

入门部分给大家介绍过平行光DirectionalLight、点光源PointLight、环境光AmbientLight,下面给大家介绍一个新的光源对象&#xff0c;也就是聚光源SpotLight。 创建聚光源SpotLight 聚光源可以认为是一个沿着特定方会逐渐发散的光源&#xff0c;照射范围在三维空间中构成一个圆…...

系统接口权限拦截器,获取用户信息存储

UserInfo 类 这是一个表示用户信息的 Java 类&#xff0c;使用了 Lombok 注解来简化代码编写。 import lombok.Data; import lombok.EqualsAndHashCode; import lombok.ToString;import java.io.Serializable; import java.util.List;Data ToString EqualsAndHashCode public…...

Chromium HTML5 新的 Input 类型color 对应c++

一、Input 类型: color color 类型用在input字段主要用于选取颜色&#xff0c;如下所示&#xff1a; <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>菜鸟教程(runoob.com)</title> </head> <body&…...

问:SQL中的通用函数及用法?

SQL函数是在SQL语句中使用的预定义的计算工具&#xff0c;可以对一列数据进行操作并返回一个单一的结果。这些函数大致可以分为两类&#xff1a;Aggregate函数和Scalar函数。Aggregate函数对一组值执行计算&#xff0c;并返回单个值&#xff0c;如求和、平均值、最大值和最小值…...

.NET Core WebApi第6讲:WebApi的前端怎么派人去拿数据?(区别MVC)

一、前端界面小基础 head&#xff1a;引入CSS, 引入JS是写在head里面。 body&#xff1a;眼睛肉眼能看到的用户展示的界面是写在body里面。 二、前端怎么派人去拿数据&#xff1f; 1、MVC&#xff1a;前后端不分离&#xff0c;MVC相比WebApi只是多了一个views的文件夹 &am…...

Chromium HTML5 新的 Input 类型date 对应c++

一、Input 类型: date date 类型允许你从一个日期选择器选择一个日期。 <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>test</title> </head> <body><form action"demo-form.php"…...

ZooKeeper的应用场景:深入探讨分布式系统中的多样化应用

Apache ZooKeeper 是一个开源的分布式协调服务&#xff0c;专为确保分布式系统中的高可用性和一致性而设计。在现代分布式应用程序中&#xff0c;协调、同步和管理是实现高效和可靠服务的关键部分&#xff0c;而 ZooKeeper 通过提供这些基础功能而成为许多分布式系统不可或缺的…...

【Vue3】第四篇

Vue3学习第四篇 01. 插槽Slots02. 插槽Slots&#xff08;续集&#xff09;03. 插槽Slots&#xff08;再续集&#xff09;04. 组件生命周期05. 生命周期应用06. 动态组件07. 组件保持存活08. 异步组件09. 依赖注入10. Vue应用 01. 插槽Slots 模板内容&#xff1a;html结构&#…...

Chromium HTML5 新的 Input 类型tel对应c++

一、Input 类型: tel <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>test</title> </head> <body><form action"demo-form.php">电话号码: <input type"tel" name…...

JVM—类加载器、双亲委派机制

目录 什么是类加载器 类加载器的分类 Bootstrap启动类加载器 通过启动类加载器加载用户jar包 Extension扩展类加载器和Application应用程序类加载器 通过扩展类加载器加载用户jar包 双亲委派机制 打破双亲委派机制 自定义类加载器 线程上下文类加载器 Osgi框架的类加…...

笔试题 求空格分割的英文句子中,最大单词长度。

求空格分割的英文句子中&#xff0c;最大单词长度。例如:“this is a word”&#xff0c;最大单词长度为4。要求:不能用 split 函数对字符串进行切分&#xff0c;算法复杂度为o(n) public class MaxWordLength { public static int maxWordLength(String sentence) { if (se…...

【笔记】大模型长度外推技术 NTK-Aware Scaled RoPE

NTK-Aware Scaled RoPE 正弦编码(Sinusoidal)旋转位置编码RoPE编码步骤&#xff1a;旋转位置编码的优势 NTK-Aware Scaled RoPE直接外推线性内插进制转换高频外推、低频内插的理解位置编码 总结参考&#xff1a; 长度外推技术是自然语言处理&#xff08;NLP&#xff09;领域中&…...

前端 eslint 配置,以及在git提交之前自动format

目录 1、配置eslint步骤 1、eslint安装配置步骤 2、配置scripts步骤 3、测试eslint 2、配置git-hook1、安装环境2、最终效果 众所周知&#xff0c;前端项目可以在报很多error的情况下运行。但是良好的代码规范仍然有利于项目的开发维护&#xff0c;这里提供我的规范&#xff0c…...

2024.10.9华为留学生笔试题解

第一题无线基站名字相似度 动态规划 考虑用动态规划解决 char1=input().strip() char2=input().strip() n,m=len(char1),len(char2) dp=[[0]*(m+1) for _ in range(n+1)] #dp[i][j]定义为以i-1为结尾的char1 和以 j-1为结尾的char2 的最短编辑距离 setA = set(wirel@com) set…...

利用ADPF性能提示优化Android应用体验

Android Dynamic Performance Framework(ADPF)是google推广的一套用于优化散热以及CPU性能的动态性能框架。本文主要介绍其中的performance hint的部分。 1、为何引入ADPF 我们都知道&#xff0c;在大多数设备上&#xff0c;Android 会动态调整CPU的频率和核心类型。如果work l…...

论文阅读 - Pre-trained Online Contrastive Learning for Insurance Fraud Detection

Pre-trained Online Contrastive Learning for Insurance Fraud Detection| Proceedings of the AAAI Conference on Artificial Intelligence 目录 摘要 Introduction Methodology Problem Formulation Pre-trained Model for Enhanced Robustness Detecting Network a…...

【最全基础知识2】机器视觉系统硬件组成之工业相机镜头篇--51camera

机器视觉系统中,工业镜头作为必备的器件之一,须和工业相机搭配。工业镜头是机器视觉系统中不可或缺的重要组成部分,其质量和性能直接影响到整个系统的成像质量和检测精度。 目录 一、基本功能和作用 二、分类 1、按成像方式分 2、按焦距分 3、按接口类型分 4、按应用…...

虚拟机WIN7安装PADS VX24 出现脚本故障 IPW213

用虚拟机安装WIN7&#xff0c;再开始安装PADS V24出现脚本故障IPW213 有去.NetFramework3.5 仍然没有效果 Download Microsoft .NET Framework 3.5 from Official Microsoft Download Center 最终用360驱动大师检测了下 发现有些必备组件没有安装&#xff0c;安装之后重启。 …...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中&#xff0c;我们可能会遇到一些流式数据处理的场景&#xff0c;比如接收来自上游接口的 Server-Sent Events&#xff08;SSE&#xff09; 或 流式 JSON 内容&#xff0c;并将其原样中转给前端页面或客户端。这种情况下&#xff0c;传统的 RestTemplate 缓存机制会…...

LeetCode - 394. 字符串解码

题目 394. 字符串解码 - 力扣&#xff08;LeetCode&#xff09; 思路 使用两个栈&#xff1a;一个存储重复次数&#xff0c;一个存储字符串 遍历输入字符串&#xff1a; 数字处理&#xff1a;遇到数字时&#xff0c;累积计算重复次数左括号处理&#xff1a;保存当前状态&a…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)

宇树机器人多姿态起立控制强化学习框架论文解析 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架&#xff08;一&#xff09; 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...

【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)

1.获取 authorizationCode&#xff1a; 2.利用 authorizationCode 获取 accessToken&#xff1a;文档中心 3.获取手机&#xff1a;文档中心 4.获取昵称头像&#xff1a;文档中心 首先创建 request 若要获取手机号&#xff0c;scope必填 phone&#xff0c;permissions 必填 …...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表

##鸿蒙核心技术##运动开发##Sensor Service Kit&#xff08;传感器服务&#xff09;# 前言 在运动类应用中&#xff0c;运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据&#xff0c;如配速、距离、卡路里消耗等&#xff0c;用户可以更清晰…...

Redis:现代应用开发的高效内存数据存储利器

一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发&#xff0c;其初衷是为了满足他自己的一个项目需求&#xff0c;即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源&#xff0c;Redis凭借其简单易用、…...

解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用

在工业制造领域&#xff0c;无损检测&#xff08;NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统&#xff0c;以非接触式光学麦克风技术为核心&#xff0c;打破传统检测瓶颈&#xff0c;为半导体、航空航天、汽车制造等行业提供了高灵敏…...

Elastic 获得 AWS 教育 ISV 合作伙伴资质,进一步增强教育解决方案产品组合

作者&#xff1a;来自 Elastic Udayasimha Theepireddy (Uday), Brian Bergholm, Marianna Jonsdottir 通过搜索 AI 和云创新推动教育领域的数字化转型。 我们非常高兴地宣布&#xff0c;Elastic 已获得 AWS 教育 ISV 合作伙伴资质。这一重要认证表明&#xff0c;Elastic 作为 …...

ubuntu22.04 安装docker 和docker-compose

首先你要确保没有docker环境或者使用命令删掉docker sudo apt-get remove docker docker-engine docker.io containerd runc安装docker 更新软件环境 sudo apt update sudo apt upgrade下载docker依赖和GPG 密钥 # 依赖 apt-get install ca-certificates curl gnupg lsb-rel…...