记一次:Python的学习笔记二(Django项目1)

前言:书接上回,认识了Python项目环境,那么开始做一些案例了,笔者是Java出身,接触的也大都是web项目,那么Python的web项目有哪些呢?了解了一下有很多,37个之多,有 Django 框架 Flask 框架Pyramid 框架web.py 框架 Tornado 框架TurboGears 框架...各种各样吧。所以学习的话也是推荐排名靠前的,各个框架的优缺点不做展开讲解

目录总结图

1.安装django

安装django可以在两种环境安装,前文已经说过,可以在全局环境下安装,也可以在激活的虚拟环境下安装。 

pip install django

安装之后查看环境目录

c:\python- python.exe- Scripts- pip.exe- django-admin.exe   【工具,创建django项目中的文件和文件夹】- Lib- 内置模块- site-packages- openpyxl- python-docx- flask- django         【框架的源码】

2.创建项目

django中项目会有一些默认的文件和默认的文件夹。

2.1 在终端

打开终端。激活虚拟环境,进入到myenv目录下的Scripts文件夹,输入activate即可

使用django-admin命令创建项目

django-admin startproject HelloWorld

2.2 Pycharm

使用IDE创建也是可以的,根据工具进行创建

特殊说明:

命令行,创建的项目是标准的。

3、项目介绍

使用 django-admin 来创建 HelloWorld 项目:

django-admin startproject HelloWorld

创建完成后我们可以查看下项目的目录结构:

默认项目的文件介绍:
HelloWorld
├── manage.py         【项目的管理,启动项目、创建app、数据管理】【不要动】【***常常用***】
└── HelloWorld├── __init__.py├── settings.py    【项目配置】           【***常常修改***】├── urls.py        【URL和函数的对应关系】【***常常修改***】├── asgi.py        【接收网络请求】【不要动】└── wsgi.py        【接收网络请求】【不要动】

目录说明:

  • HelloWorld: 项目的容器。
  • manage.py: 一个实用的命令行工具,可让你以各种方式与该 Django 项目进行交互。
  • HelloWorld/__init__.py: 一个空文件,告诉 Python 该目录是一个 Python 包。
  • HelloWorld/settings.py: 该 Django 项目的设置/配置。
  • HelloWorld/urls.py: 该 Django 项目的 URL 声明; 一份由 Django 驱动的网站"目录
  • HelloWorld/wsgi.py: 一个 WSGI 兼容的 Web 服务器的入口,以便运行你的项目。

各文件和目录解释:

外层的HelloWorld/目录与Django无关,只是你项目的容器,可以任意重命名。

manage.py:一个命令行工具,管理Django的交互脚本。

内层的HelloWorld/目录是真正的项目文件包裹目录,它的名字是你引用内部文件的Python包名,例如:HelloWorld.urls。

HelloWorld/init.py:一个定义包的空文件。

HelloWorld/settings.py:项目的配置文件。非常重要!

HelloWorld/urls.py:路由文件,所有的任务都是从这里开始分配,相当于Django驱动站点的目录。非常重要!

HelloWorld/wsgi.py:一个基于WSGI的web服务器进入点,提供底层的网络通信功能,通常不用关心。

HelloWorld/asgi.py:一个基于ASGI的web服务器进入点,提供异步的网络通信功能,通常不用关心。

4、启动服务

回到项目根目录下HelloWorld 运行

python manage.py runserver

Django会以127.0.0.1:8000这个默认配置启动开发服务器。如果你想指定端口,请在命令中显示给出:python manage.py runserver 8080

如果想修改服务器的ip地址,请按下面的方式运行命令:python manage.py runserver 0:8000

0 是 0.0.0.0 的简写,Django将运行在0.0.0.0:8000上,整个局域网内都将可以访问站点,而不只是是本机(这其中可能还需要做一些配置和网络测试)

访问地址会有什么?

5、创建应用(app

创建应用,在 Django 中,每一个应用(app)都是一个 Python 包,并且遵循着相同的约定,app的存放位置可以是任何地点,但是通常都将它们放在与manage.py脚本同级的目录下,这样方便导入文件。

5.1、创建应用

进入HelloWorld 项目根目录,确保与manage.py文件处于同一级,输入下述命令:

python manage.py  startapp  booktest 或者 django-admin startapp myapp

生成的目录结构如下

│   admin.py   [固定,不用动]  django默认提供了admin后台管理
│   apps.py    [固定,不用动] app启动类
│   models.py  【*** 重要 ****】对数据库操作
│   tests.py    [固定,不用动] 单元测试
│   views.py   【*** 重要 ****】 函数
│   __init__.py
└───migrations  [固定,不用动] 数据库变更记录__init__.py

5.2 在settings.py 里面配置信息注册子应用

如果想要把应用在这个项目中跑起来需要将应用添加到项目中,

注意:

还是这个文件,再找到 TEMPLATES项,添加DIRS 

5.3模型类models.py

from django.db import models# Create your models here.
class BlogPost(models.Model):title = models.CharField(max_length=150) #博客的标题body = models.TextField()    #博客正文timestamp = models.DateTimeField() #博客创建时间

5.4设置数据库

如果使用默认的SQlite:

打开HelloWorld 目录下的settings.py文件,找到DATABASES元组,如下图所示,默认使用SQlite。

如果使用MySQL数据库:

更改mypro目录下的settings.py文件,找到DATABASES元组,改为:

DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql',   #改为MySQL数据库'NAME': 'mydb',                         #数据库名称'USER': 'root',                         #数据库用户名'PASSWORD': '123abc',                   #数据库用户密码'HOST': '127.0.0.1',                    #主机地址'PORT': '3306',                         #端口号}
}

在Django中使用MySQL数据库之前,要先确保已经建立了数据库mydb,并且上图使用的用户名和密码是已经存在的。

还需在项目mypro中的_init_.py文件做修改,

先下载模块pymysql,命令为:

pip install pymysql

5.5 创建数据库表,生成编辑文件

首先创建数据库表,生成编辑文件(根据模型类生成编译文件)命令如下:

 python manage.py makemigrations

5.6 迁移实际生成表

根据编译文件去创建数据库去生成表)然后执行迁移,命令如下:

python manage.py migrate

5.7使用Navicat查看数据库

这里生成的表,有系统自带的,还有我们自己创建的,自己去找

Python默认的数据库sqlite3就创建出来了

使用Navicat连接查看

如果连接的是mysql则迁移之后在mysql库中也创建了表

5.8 管理界面本地化

此处改为中国化(亚洲/上海时区)打开helloworld项目下的settings.py文件,找到如下设置

修改以下两项:

LANGUAGE_CODE = 'zh-Hans'

TIME_ZONE = 'Asia/Shanghai'

5.9 创建超级用户admin

在Terminal命令行输入:

python manage.py createsuperuser

按照提示一步步输入即可,密码过于简单的会进行提示。

5.10 使用admin

admin为自动后台管理,再次打开settings.py文件,找到INSTALLED_APPS这个元组,观察其第一行的‘django.contirb.admin'是否被注释(旧版好像会被注释,需要自己去掉注释,新版不会)。

确认admin设置正确后,需要添加在admin页面显示的模型,即注册BlogPost。打开booktest下的admin,py文件

添加以下代码,这样admin就可以管理已经注册的对象:

from django.contrib import admin    #导入admin
from booktest import models           #导入数据模型admin.site.register(models.BlogPost)  #使用admin注册BlogPost类

6、启动应用服务

python manage.py runserver

打开浏览器,输入链接:http://127.0.0.1:8000/admin

注意:此时链接地址稍有改变,需要进入admin。

注意,如果你的blog界面此时没有添加的类,可能的问题为:1.没有在settings.py的INSTALLED_APPS中添加应用。2.应用的models.py中有错误 。3.没有在admin.py中进行模型注册。

然后可以进行其它操作了

 下一篇分享Django模板使用笔记呢还是Django集成Redis笔记呢?留个悬念哈哈哈

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

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

相关文章

spring cloud gateway源码分析,一个请求进来的默认处理流程

1.前言 spring cloud gateway的基本组成和作用就不细赘述,此篇适合对此有一定了解的人阅读。 spring cloud gateway版本: Hoxton.SR1 spring cloud gateway的配置使用yml配置: server:port: 9527y#根据微服务名称进行动态路由的配置 spring:applicati…

人机协同

人机协同是指人和机器之间进行合作和协同工作的方式,人机协同是人工智能技术发展的一个重要方向,通过人机协同的方式,可以充分利用机器的智能和人的智慧,共同实现更高效、更智能的工作和生活方式。人机协同可以应用于各种领域和场…

Docker的常用基本命令(基础命令)

文章目录 1. Docker简介2. Docker环境安装Linux安装 3. 配置镜像加速4. Docker镜像常用命令列出镜像列表搜索镜像下载镜像查看镜像版本删除镜像构建镜像推送镜像 5. Docker容器常用命令新建并启动容器列出容器停止容器启动容器进入容器删除容器(慎用)查看…

基于Spring MVC的前后端交互案例及应用分层的实现

目录 分析程序报错的步骤 案例 一.加法计算器 二.实现用户登录 1.登录接口 2.获取用户的登录信息 三.留言板 1.接口定义 2.完成后端代码 3.测试后端代码 四.图书管理系统 1.定义接口 2.后端代码 3.测试后端代码 4.前端交互代码 应用分层 1.三层架构 分析程序报…

QT Creator 保存(Ctrl+S)时,会将Tab制表符转换为空格

今天在写makefile文件时,发现QT Creator 保存(CtrlS)时,会将Tab制表符转换为空格,之前没有发现,略坑,官网上也有说明,点这里 简单来说,解决办法如下 依次点击:Tools ->Options-&g…

JPA数据源Oracle异常记录

代码执行异常 ObjectOptimisticLockingFailureException org.springframework.orm.ObjectOptimisticLockingFailureException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1; nested exception is org.hibernate.StaleSta…

Linux 文件管理

内容概述 1 文件系统目录结构 存放的是内存中正在运行的系统状态信息,数据不在硬盘而是在内存中 echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all1.1 文件系统的目录结构 Linux 操作系统 ext / xfs 文件系统是区分大小写,大小写敏感 Linux的文件…

MySQL导出ER图为图片或PDF

目录 1、Navicat 生成ER图 1、选择数据库,逆向数据库到模型 2、查看ER图 3、导出ER图 2、使用MySQL官方工具:MySQL Workbench 1、首先连接MySQL数据库 2、点击Database,选择Reverse Engineer 3、填写数据库信息,点Next …

【鸿蒙应用ArkTS开发系列】-自定义底部菜单列表弹窗

文章目录 前言创建Demo工程创建dialog 文件夹创建ListMenu 接口创建自定义弹窗 ListMenuDialog使用自定义弹窗 打包测试效果演示默认效果菜单带图标效果设置文本颜色效果不同文本颜色效果无标题效果 前言 上一篇文章中我们实现了选择图片、选择文件、拍照的功能 。 链接在这里…

每日一练2023.12.1——输出GPLT【PTA】

题目链接:L1-023 输出GPLT 题目要求: 给定一个长度不超过10000的、仅由英文字母构成的字符串。请将字符重新调整顺序,按GPLTGPLT....这样的顺序输出,并忽略其它字符。当然,四种字符(不区分大小写&#x…

对小程序的初了解

WXML和HTML的区别 标签名称不同 HTML&#xff1a;div、a、span、img WXML&#xff1a;view、text、image、navigator 属性节点不同 <a href"#">超链接</a> <navigator url"/pages/home/home"></navigator> 提供了类似vue的…

计算机视觉(OpenCV+TensorFlow)

计算机视觉&#xff08;OpenCVTensorFlow&#xff09; 文章目录 计算机视觉&#xff08;OpenCVTensorFlow&#xff09;前言7. 图像直方图绘制直方图绘制直方图有两种方式&#xff1a; 掩膜 8. 直方图均衡化直方图均衡化的介绍直方图均衡化的步骤自适应直方图均衡化 9. 图像转换…

SAP_ABAP_编程基础_数据集_创建并填充摘录数据集 / 处理摘录数据集

SAP ABAP 顾问&#xff08;开发工程师&#xff09;能力模型_Terry谈企业数字化的博客-CSDN博客文章浏览阅读494次。目标&#xff1a;基于对SAP abap 顾问能力模型的梳理&#xff0c;给一年左右经验的abaper 快速成长为三年经验提供超级燃料&#xff01;https://blog.csdn.net/j…

webshell之自建漏洞免杀

今天主要讲解&#xff0c;如何利用通用漏洞来进行命令执行&#xff0c;从而达到免杀效果 常规反序列化免杀 这种方式就相当于直接触发提供一个反序列化漏洞入口&#xff0c;但是能否被利用&#xff0c;还是在于服务端本身是否存在反序列化漏洞&#xff0c;下面给了一个例子&a…

基于机器学习的笔记本电脑导购系统

目 录 中英文摘要 第一章 概述 1 1.1 课题开发背景及意义 1 1.2 课题研究现状 2 1.3 课题主要研究内容 3 第二章 需求分析 4 2.1 功能需求分析 4 2.2 可行性分析 10 2.3 流程分析 11 2.4 数据流图 13 2.5 性能需求分析 15 第三章 开发技术及工具 16 3.1 系统开发模式技术 16 3…

《凤凰项目》读书笔记

文章目录 一、书名和作者二、书籍概览2.1 主要论点和结构2.2 目标读者和应用场景 三、核心观点与主题3.1 DevOps的核心原则与文化变革3.2 持续交付与自动化3.3 变更管理与风险控制3.4 关键绩效指标与持续改进 四、亮点与启发4.1 最有影响的观点4.2 对个人专业发展的启示 五、批…

【Linux--进程控制】

目录 一、进程等待1.1进程等待方法1.2获取子进程status 二、进程替换2.1单进程版本--最简单得程序替换2.2 进程替换得原理2.3 多进程版本--验证各种程序替换接口2.4 总结 一、进程等待 1.1进程等待方法 问题1&#xff1a;进程等待是什么&#xff1f; 通过系统调用wait/waitpi…

Java 定时任务

Java 定时任务 为什么需要定时任务&#xff1f; 我们来看一下几个非常常见的业务场景&#xff1a; 某系统凌晨 1 点要进行数据备份。某电商平台&#xff0c;用户下单半个小时未支付的情况下需要自动取消订单。某媒体聚合平台&#xff0c;每 10 分钟动态抓取某某网站的数据为…

五、关闭三台虚拟机的防火墙和Selinux

目录 1、关闭每台虚拟机的防火墙 2、关闭每台虚拟机的Selinux 2.1 什么是SELinux

使用SpringBoot和ZXing实现二维码生成与解析

一、ZXing简介 ZXing是一个开源的&#xff0c;用Java实现的多种格式的1D/2D条码图像处理库。它包含了用于解析多种格式的1D/2D条形码的工具类&#xff0c;目标是能够对QR编码&#xff0c;Data Matrix, UPC的1D条形码进行解码。在二维码编制上&#xff0c;ZXing巧妙地利用构成计…