[Django-1] 快速建立项目

2023-09-14 16:03:21

初始化项目

python -m pip install Django
cd 到想要创建项目的目录
django-admin startproject DjangoStudy

这时候在目录中就会有一个DjangoStudy的目录,用IDEA打开

找到setting.py修改数据库信息

DATABASES = {
    # 'default': {
    #     'ENGINE': 'django.db.backends.sqlite3',
    #     'NAME': BASE_DIR / 'db.sqlite3',
    # }
    'default': {
        'ENGINE': 'django.db.backends.mysql',  # 数据库引擎
        'NAME': 'study',  # 数据库名字
        'USER': 'root',  # 用户名
        'PASSWORD': 'xxx',  # 密码
        'HOST': 'ip',  # HOST
        'PORT': '3306',  # 端口
        'OPTIONS': {'charset': 'utf8mb4'},  # 打开数据库 编码格式 ——解决4字节表情无法储存问题
    }
}

创建app

python manage.py startapp +'名称'
在这里我的运行命令是
python manage.py startapp app

项目和app的关系

项目是程序的第一入口,创建项目之后会有基础的setting配置文件,以及执行入口manager.py文件,这是自动生成的。至于app意思是一个项目中我可以开发多个模块,这些模块的统一入口都是项目。每个子模块可以实现独立的代码逻辑。
项目中的urls.py文件

urlpatterns = [
    path('admin/', admin.site.urls),
    url('app/', include('app.urls'))
]

这个文件是程序的全局url的入口,后面include意思是和别的app中的url进行拼接。每一个app都应该有自己的url.py不过和项目中的urls.py不同,其他的都要开发者手动建立,唯一项目的urls.py是自动生成的。
app中的urls.py
urlpatterns = [
url(r’^test’, UserOptionsApi.as_view())
]

下面的代码一般放在view.py中

class UserOptionsApi(APIView):
    def get(self, request):
         return HttpResponse("<h1>welcome to Django</h1>")

项目启动

python manage.py runserver
注意这种方式启动的web服务器时Django内置的web服务器,出于性能能=考虑这种方式只适用于开发测试。正式运行的网站要用WSGI

前端请求: http://127.0.0.1:8000/child/test
可以看到项目中的url和 app中的url路径进行了合并。

项目中中的urls.py和app中的urls.py的关系

  1. 写法不同
项目中写法:url('child/', include('child.urls'))
app中写法:url(r'^test', UserOptionsApi.as_view())
项目中一般用include(app包名+'.'+urls)这样就会找到对应的app中的urls.py文件
app中的写法会对应到具体的视图(也就是改请求路径的响应主体)
  1. 相关性
    前者和后者的路径会拼接起来

Model

对应数据库中的一个表
models.py增加下面的代码

class Grade(models.Model):
    id = models.AutoField(verbose_name='自增id', name="id", primary_key=True)
    grade_name = models.CharField(verbose_name="班级名称", name="grade_name", max_length=200)
    create_time = models.DateTimeField(verbose_name='创建时间',name="create_time", auto_now_add=True)  # 第一次赋值
    update_time = models.DateTimeField(verbose_name='最后一次更新时间',name="update_time", auto_now=True)  # 第二次赋值

Django生成表

python manage.py makemigrations  app
Python manager.py migrate app
# 查看数据库就会看到一张表

查询

  1. modelClass.objects.all()->QuerySet
    返回可迭代对象, 类似于select * from table
  2. modelClass.objects.filter(字段名称=value)->QuerySet
  3. modelClass.objects.get(字段名称=value)->modelClass
    Get 只能返回一条数据,如果未找到数据则抛出异常, filter则不会
  4. modelClass.objects.values(列1,列2)->list(dict)
    返回的不是modelClass 而是字典

理解

其实没什么特殊的,这个框架把数据库的增删改查做了很多的封装,甚至增加了自动建立数据库表的功能. 其实就是ORM
object relation model. 站在我自己的立场,我个人其实不太喜欢用框架去查询数据库,自己定义python 对象,去查询数据库,对数据库的连接做个封装,然后数据库查出来的数据 手动封装为python 对象,最简单了。 理解这种框架的设计初衷,但是好像并没有减轻工作量。。。因为要按照既定的要求去写代码,会导致学习成本升高。。。。

更多推荐

React+Typescript项目环境中搭建并使用redux环境

前几篇文章我们的项目已经开始功能渐渐完善了那么我们来说最后一个点redux这个并不需要我们多努力其实官方文档给到已经算是很全面了我们可以直接访问地址TypeScript中文手册中文手册和官方是一样的而且对我们非常友好我们会在左侧导航栏中找到一个React点进去进入之后一直往下翻我们就可以看到Redux部分我们直接用他这

9.子数组统计问题

文章目录子数组计数问题[560.和为K的子数组](https://leetcode.cn/problems/subarray-sum-equals-k/)[974.和可被K整除的子数组](https://leetcode.cn/problems/subarray-sums-divisible-by-k/)[523.连续

C#实战:基于腾讯OCR技术实现企业证书识别和数据提取实践

一、OCR技术介绍在当今数字化时代,OCR(OpticalCharacterRecognition)识别技术正发挥着越来越重要的作用。OCR技术通过将图像中的文字转化为可编辑的文本形式,实现了对大量纸质文档的数字化处理和信息提取。常见的有企业资质证书的识别到身份证、护照等各类证件的自动识别等方面,OCR技术正在为各行各

macOS Big Sur:探索新设计,聚焦新体验

自苹果公司推出macOSBigSur以来,这一新版操作系统以其突破性的设计刷新了我们对Mac的认知。本文将详细介绍macOSBigSur的各项新功能及其为用户带来的卓越体验。安装:macOSBigSur(macos11)v11.7.10正式版一、全新设计:导览更轻松,控制更随心macOSBigSur对用户界面进行了全面

ChatGPT:使用fastjson读取JSON数据问题——如何使用com.alibaba.fastjson库读取JSON数据的特定字段

ChatGPT:使用fastjson读取JSON数据问题——如何使用com.alibaba.fastjson库读取JSON数据的特定字段有一段Json字符串:{"code":200,"message":"success","data":{"total":"1","list":[{"question_no":"21520

键盘失灵按什么键恢复?详细方法分享!

“我的电脑键盘莫名其妙失灵了,试了好多方法都无法恢复。请问遇到键盘失灵的情况,应该按什么键才能恢复呢?”键盘是计算机的重要输入设备之一,但有时候它可能会出现失灵的情况,让用户感到困惑和不知所措。但其实,解决该问题并不是很困难。键盘失灵按什么键恢复呢?别着急!继续往下看吧!小编给大家总结了详细的解决方法!键盘失灵的常见原

湖南湘潭家具3D轮廓扫描测量家居三维数字化外观逆向设计-CASAIM中科广电

随着科技的不断进步,CASAIM三维扫描技术在各个行业中得到了广泛应用,家具行业也不例外。传统的家具设计和展示方式已经无法满足现代消费者的个性化、多元化需求,而三维扫描技术的出现为家具行业带来了新的机遇和可能性。家具表面有雕刻图案,纹理特征较多,幅面大,传统人工建模方式效率低、耗时长,且尺寸易出现误差。特别是针对一些比

argparse的用法

目录一、使用argparse二、参数详解参考一、使用argparseargparse模块是Python内置的用于命令项选项与参数解析的模块,argparse模块可以让人轻松编写用户友好的命令行接口,能够帮助程序员为模型定义参数。argparse定义包括四个步骤:导入argparse包——importargparse创建

《扩散模型 从原理到实战》Hugging Face (二)

第二章HuggingFace简介本章无有效内容第三章从零开始搭建扩散模型有时候,只考虑事情最简单的情况反而更有助于理解其工作原理。本章尝试从零开始搭建廓庵模型,我们将从一个简单的扩散模型讲起,了解其不同部分的工作原理,并对比它们与更复杂的结构之间的不同。首先,本章涵盖的知识点:1、退化过程2、什么是UNET模型以及如何

zoneinfo

在Linux系统中,zoneinfo是一个包含了世界各地时区信息的目录,通常位于/usr/share/zoneinfo。这个目录下的子目录和文件名对应了各个时区的名称。例如,/usr/share/zoneinfo/America/Los_Angeles文件就包含了美国洛杉矶的时区信息。你可以通过以下步骤来使用zonei

阿里云产品试用系列-云桌面电脑

无影云电脑(WUYINGWorkspace),是一种易用、安全、高效的云上桌面服务。它支持快速便捷的桌面环境创建、部署、统一管控与运维。无需前期传统硬件投资,帮您快速构建安全、高性能、低成本的企业桌面办公体系。可广泛应用于具有高数据安全管控、高性能计算等要求的安全办公、金融、设计、影视、教育等领域。如上所示,在阿里云官

热文推荐