Django初窥门径-项目初始化

环境准备

切换pypi

运行下面的脚本将pypi源切换为阿里云镜像,避免安装python库的过程中出现网络问题

#!/bin/bash# 定义配置内容
config_content="[global]
index-url = http://mirrors.aliyun.com/pypi/simple/[install]
trusted-host=mirrors.aliyun.com
"# 获取用户主目录
user_home="$HOME"# 确保.pip目录存在
pip_dir="$user_home/.pip"
if [ ! -d "$pip_dir" ]; thenmkdir -p "$pip_dir"
fi# 设置pip配置文件的路径
pip_conf_path="$pip_dir/pip.conf"# 写入配置内容到pip.conf文件
echo -e "$config_content" > "$pip_conf_path"echo "配置已写入到 $pip_conf_path 文件中。"

新建Django项目

使用PyCharm创建项目

在这里插入图片描述

目录结构

myproject/  # 项目根目录
├── myproject/  # 项目配置目录
│   ├── __init__.py  # 空文件,标识目录为 Python 包
│   ├── settings.py  # 项目设置,包括数据库配置、应用配置等
│   ├── urls.py  # URL 路由规则的定义
│   ├── wsgi.py  # 用于部署项目到 WSGI 服务器的入口文件
│   ├── asgi.py  # 用于部署项目到 ASGI 服务器的入口文件
├── myapp/  # 应用程序目录
│   ├── __init__.py  # 空文件,标识目录为 Python 包
│   ├── admin.py  # 配置应用程序的后台管理界面
│   ├── apps.py  # 应用程序的配置
│   ├── migrations/  # 存放数据库迁移文件
│   ├── models.py  # 定义应用程序的数据模型
│   ├── tests.py  # 单元测试文件
│   ├── views.py  # 包含处理 HTTP 请求的视图函数
│   ├── static/  # 存放应用程序的静态文件
│   │   ├── myapp/  # 应用程序的静态文件目录
│   │   │   ├── my_css.css  # 应用程序的 CSS 文件
│   │   │   ├── my_js.js  # 应用程序的 JavaScript 文件
│   ├── templates/  # 存放应用程序的 HTML 模板文件
│   │   ├── myapp/  # 应用程序的模板文件目录
│   │   │   ├── template.html  # 应用程序的 HTML 模板
├── manage.py  # 项目管理脚本,用于执行各种管理任务
├── static/  # 项目静态文件目录
│   ├── my_global_static.css  # 全局的 CSS 文件
├── templates/  # 项目模板文件目录
│   ├── base.html  # 项目的基本 HTML 模板
│   ├── index.html  # 项目的首页 HTML 模板
├── media/  # 媒体文件目录,存放用户上传的媒体文件

启动项目

在这里插入图片描述

设置语言和时区

修改CodeVoyager/settings.py

# 设置项目的默认语言代码为简体中文
LANGUAGE_CODE = 'zh-hans'# 设置项目的时区为亚洲/上海
TIME_ZONE = 'Asia/Shanghai'# 启用国际化(Internationalization)
# 当为 True 时,允许项目支持多种语言和翻译
USE_I18N = True# 启用本地化(Localization)
# 当为 True 时,项目将本地化日期、时间等内容为特定地区的格式
USE_L10N = True# 启用时区支持
# 当为 True 时,项目将处理日期和时间的时区信息
USE_TZ = True

在这里插入图片描述

连接mysql

创建数据库

CREATE USER 'code_voyager'@'%' IDENTIFIED BY "code_voyager";
CREATE DATABASE code_voyager DEFAULT CHARACTER SET utf8;
GRANT ALL PRIVILEGES ON code_voyager.* TO code_voyager@'%';
FLUSH PRIVILEGES;

安装mysqlclient

Windows

pip install mysqlclient

macOS (Homebrew)

brew install mysql-client pkg-config
export PKG_CONFIG_PATH="/opt/homebrew/opt/mysql-client/lib/pkgconfig"
pip install mysqlclient

Linux

sudo apt-get install python3-dev default-libmysqlclient-dev build-essential # Debian / Ubuntu
sudo yum install python3-devel mysql-devel # Red Hat / CentOS
pip install mysqlclient

修改配置文件

DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'code_voyager','USER': 'code_voyager','PASSWORD': 'code_voyager','HOST': '127.0.0.1','PORT': '3306',}
}

连接Redis

安装依赖

pip install django-redis

修改配置

CACHES = {'default': {'BACKEND': 'django_redis.cache.RedisCache','LOCATION': 'redis://{url}:{port}/1'.format(url='127.0.0.1',port='6379'),"OPTIONS": {"CLIENT_CLASS": "django_redis.client.DefaultClient",},},
}

创建管理员用户

生成数据库表

python manage.py makemigrations
python manage.py migrate

新建管理员用户

python manage.py createsuperuser

在这里插入图片描述

登录管理员账号

请添加图片描述

使用djangorestframework实现rest API

安装djangorestframework

pip install markdown django-filter djangorestframework

新增分页配置CodeVoyager/pagination.py

#!/usr/bin/python
# -*- coding: utf-8 -*-
from rest_framework.pagination import PageNumberPaginationclass Pagination(PageNumberPagination):page_size_query_param = 'page_size'page_query_param = 'page'

自定义权限CodeVoyager/permissions.py

#!/usr/bin/python
# -*- coding: utf-8 -*-
from rest_framework.permissions import BasePermissionclass IsAdminUser(BasePermission):"""只允许管理员用户访问"""def has_permission(self, request, view):user = request.userreturn bool(user and user.is_active and user.is_superuser)class IsAuthenticated(BasePermission):"""允许登录用户访问"""def has_permission(self, request, view):user = request.userreturn bool(user and user.is_active and user.is_authenticated)class AllowAny(BasePermission):"""允许任何人访问"""def has_permission(self, request, view):return True

修改配置

INSTALLED_APPS = [...'rest_framework',
]# Settings for REST framework are all namespaced in the REST_FRAMEWORK setting.
# https://www.django-rest-framework.org/api-guide/settings/
REST_FRAMEWORK = {'DEFAULT_PERMISSION_CLASSES': ('CodeVoyager.permissions.IsAdminUser',),'DEFAULT_VERSIONING_CLASS': 'rest_framework.versioning.URLPathVersioning','DEFAULT_VERSION': 'v1','ALLOWED_VERSIONS': ['v1'],'DEFAULT_PAGINATION_CLASS': 'CodeVoyager.pagination.Pagination','DEFAULT_AUTHENTICATION_CLASSES': ('rest_framework.authentication.SessionAuthentication',),'DEFAULT_FILTER_BACKENDS': ('django_filters.rest_framework.DjangoFilterBackend',),
}

集成swagger

安装依赖

pip install drf-yasg2

修改配置

INSTALLED_APPS = [...'rest_framework','drf_yasg2',...
]

配置url

"""
URL configuration for CodeVoyager project.The `urlpatterns` list routes URLs to views. For more information please see:https://docs.djangoproject.com/en/4.2/topics/http/urls/
Examples:
Function views1. Add an import:  from my_app import views2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views1. Add an import:  from other_app.views import Home2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf1. Import the include() function: from django.urls import include, path2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path, include
from drf_yasg2 import openapi
from drf_yasg2.views import get_schema_view
from CodeVoyager import permissionsschema_view = get_schema_view(openapi.Info(title='全栈探索者',default_version='v1',description='全栈探索者接口文档',),public=True,permission_classes=(permissions.AllowAny,),
)urlpatterns = [path('swagger-ui/', schema_view.with_ui('swagger', cache_timeout=0), name='schema-swagger-ui'),# path('api-auth/', include('rest_framework.urls')),path('admin/', admin.site.urls),
]

测试是否正常

在这里插入图片描述

固定版本

pip freeze > requirements.txt

如果在使用的过程中由于python库之间的版本问题导致报错,请使用一下依赖:

asgiref==3.7.2
async-timeout==4.0.3
certifi==2023.7.22
charset-normalizer==3.3.2
coreapi==2.3.3
coreschema==0.0.4
Django==4.1.4
django-cors-headers==4.3.0
django-filter==23.3
django-redis==5.4.0
djangorestframework==3.13.1
drf-yasg2==1.19.4
idna==3.4
importlib-metadata==6.8.0
inflection==0.5.1
itypes==1.2.0
Jinja2==3.1.2
Markdown==3.5.1
MarkupSafe==2.1.3
mysqlclient==2.2.0
packaging==23.2
pytz==2023.3.post1
redis==5.0.1
requests==2.31.0
ruamel.yaml==0.18.5
ruamel.yaml.clib==0.2.8
six==1.16.0
sqlparse==0.4.4
typing_extensions==4.8.0
uritemplate==4.1.1
urllib3==2.0.7
zipp==3.17.0
pip install -Ur requirements.txt

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

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

相关文章

su root失败 sudo su成功进入root

目录 0.场景 1.su root输入密码kali失败 2.对kali用户暂时提权 3.问题原因 0.场景 刚刚安装好kali,想使用su root切换进入root账户 1.su root输入密码kali失败 2.对kali用户暂时提权 只要你的用户在sudoers里面,就可以输入当前用户密码暂时变成root…

Android Studio(项目收获)

取消按钮默认背景色 像按钮默认背景色为深蓝色&#xff0c;即使使用了background属性指定颜色也不能生效。 参考如下的解决方法&#xff1a; 修改/res/values/themes.xml中的指定内容如下&#xff1a; <style name"Theme.TianziBarbecue" parent"Theme.Mater…

容联七陌携手岚时科技,解决医美机构回访3大痛点

近日&#xff0c;岚时科技研发中心联合容联七陌发布了全新的智能呼叫中心系统&#xff0c;5大功能模块解决了医美机构回访过程中的3大难题&#xff1a;客户资产保全困难、客户回访技术被卡脖子、回访人员&#xff08;客服、咨询&#xff09;效率管理困难。 “智能呼叫中心”通过…

K8S知识点(三)

&#xff08;1&#xff09;环境搭建-环境初始化 Centos的版本是有要求的必须是7.5或以上&#xff0c;否则安装出来的集群是有问题的Node节点可能加入不到集群中来 详细步骤 1.同时连接三台服务器&#xff1a;查看一下版本 是否正确 2.主机名解析&#xff0c;方便节点之间的…

王道p18 第11题 现在有两个等长升序序列 A和 B,试设计一个在时间和空间两方面都尽可能高效的算法,找出两个序列 A和B的中位数。

视频讲解&#x1f447;&#xff1a; p18 第10题 c语言代码实现王道数据结构课后代码题_哔哩哔哩_bilibili 本题代码如下 int search(int a[], int b[], int c[]) {int i 0;int j 0;int k 0;while (i < 5 && j < 5){if (a[i] < b[j])c[k] a[i];elsec[k…

一种可以实现安全便捷文件摆渡的跨网文件安全交换软件

为了保护数据的安全性和完整性&#xff0c;很多企业都采用了内外网物理隔离的方式&#xff0c;防止核心数据泄露或被恶意篡改。然而&#xff0c;这也给企业内部或与外部合作伙伴之间的文件交换带来了很多不便和挑战。如何在保证数据安全的前提下&#xff0c;实现跨网文件的快速…

系列十一、拦截器(二)#案例演示

一、案例演示 说明&#xff1a;如下案例通过springboot的方式演示拦截器是如何使用的&#xff0c;以获取Controller中的请求参数为切入点进行演示 1.1、前置准备工作 1.1.1、pom <dependencies><!-- spring-boot --><dependency><groupId>org.spring…

self.register_buffer方法使用解析(pytorch)

self.register_buffer就是pytorch框架用来保存不更新参数的方法。 列子如下&#xff1a; self.register_buffer("position_emb", torch.randn((5, 3)))第一个参数position_emb传入一个字符串&#xff0c;表示这组参数的名字&#xff0c;第二个就是tensor形式的参数…

阿里云二级域名绑定与宝塔Nginx反向代理配置

在阿里或者腾讯...各大域名商买好域名&#xff0c;备案解析好&#xff0c;目标URL&#xff0c;是真正的地址&#xff0c;比如一些端口&#xff0c;后者会自动填写。 注意ssl配置好&#xff0c;这里不要带反代端口

在PostgreSQL中创建和管理数据库

PostgreSQL是一个强大、开源的关系型数据库管理系统&#xff0c;它提供了丰富的功能和灵活的配置选项&#xff0c;使得它成为许多开发者和组织的首选数据库之一&#xff0c;接下来我会介绍如何在PostgreSQL中创建和管理数据库。 一、安装和配置PostgreSQL 第一步&#xff0c;…

[动态规划] (十一) 简单多状态 LeetCode 面试题17.16.按摩师 和 198.打家劫舍

[动态规划] (十一) 简单多状态: LeetCode 面试题17.16.按摩师 和 198.打家劫舍 文章目录 [动态规划] (十一) 简单多状态: LeetCode 面试题17.16.按摩师 和 198.打家劫舍题目分析题目解析状态表示状态转移方程初始化和填表顺序 代码实现按摩师打家劫舍 总结 注&#xff1a;本题与…

Web服务器的搭建

网站需求&#xff1a; 1.基于域名www.openlab.com可以访问网站内容为 welcome to openlab!!! 2.给该公司创建三个网站目录分别显示学生信息&#xff0c;教学资料和缴费网站&#xff0c;基于www.openlab.com/student 网站访问学生信息&#xff0c;www.openlab.com/data网站访问教…

3D 线激光相机的激光条纹中心提取方法

论文地址:Excellent-Paper-For-Daily-Reading/application/centerline at main 类别:应用——中心线 时间:2023/11/06 摘要 线激光条纹中心提取是实现线激光相机三维扫描的关键,根据激光三角测量法研制了线激光相机,基于传统 Steger 法对其进行优化并提出一种适用于提…

变压器试验VR虚拟仿真操作培训提升受训者技能水平

VR电气设备安装模拟仿真实训系统是一种利用虚拟现实技术来模拟电气设备安装过程的培训系统。它能够为学员提供一个真实、安全、高效的学习环境&#xff0c;帮助他们更好地掌握电气设备的安装技能。 华锐视点采用VR虚拟现实技术、MR混合现实技术、虚拟仿真技术、三维建模技术、人…

深入了解5米DEM:地表高程的数字呈现与广泛应用

引言 数字高程模型&#xff08;DEM&#xff09;是现代地理信息系统和地图制图的核心要素之一。它以数字矩阵的形式连续地记录了地表的高程变化&#xff0c;为国家空间地理信息的重要组成部分。本文将介绍5米DEM的概念、构建方法以及广泛的应用领域。 5米DEM的概念 5米DEM是一种…

【Qt之QtXlsx模块】安装及使用

1. 安装Perl&#xff0c;编译QtXlsx源码用 可以通过命令行进行查看是否已安装Perl。 下载及安装传送门&#xff1a;链接: https://blog.csdn.net/MrHHHHHH/article/details/134233707?spm1001.2014.3001.5502 1.1 未安装 命令&#xff1a;perl --version 显示以上是未安装…

网络编程打开的第一节预备课-----关于socket

一、引言 传统的进程间通信借助内核提供的 IPC 机制进行, 但是只能限于本机通信, 若 要跨机通信, 就必须使用网络通信&#xff0c;比如之前在操作系统学习到的pipe通信&#xff0c;这是一个本机通信&#xff0c;是最基本的IPC机制进行的。 socket网络通信和pipe通信的区别在于…

AVL树性质和实现

AVL树 AVL是两名俄罗斯数学家的名字&#xff0c;以此纪念 与二叉搜索树的区别 AVL树在二叉搜索树的基础上增加了新的限制&#xff1a;需要时刻保证每个树中每个结点的左右子树高度之差的绝对值不超过1 因此&#xff0c;当向树中插入新结点后&#xff0c;即可降低树的高度&…

nn.embedding函数详解(pytorch)

提示&#xff1a;文章附有源码&#xff01;&#xff01;&#xff01; 文章目录 前言一、nn.embedding函数解释二、nn.embedding函数使用方法四、模型训练与预测的权重变化探讨 前言 最近发现prompt工程(如sam模型)&#xff0c;也有transform的detr模型等都使用了nn.Embedding函…

数据结构大体体系

逻辑结构 线性结构线性表一串珠子用线连起来&#xff0c;这就是典型的“线性存储结构”。每颗珠子之间的关系结构也很简单&#xff0c;包括头尾的话&#xff0c;它们最少有一个关系对象&#xff0c;而中间的珠子无论前后都只有一个关系对象&#xff0c;即 one-to-one栈队列字符…