Django学习之小试牛刀

六、Django学习之小试牛刀


其他关于Python Web开发笔记:(如果遇到问题可以一起交流~)

一、Flask学习之HTML-CSDN博客

二、Flask学习之CSS-CSDN博客

【接上篇】二、Flask学习之CSS(下篇)-CSDN博客

三、Flask学习之BootSrap-CSDN博客

四、Flask学习之JavaScript-CSDN博客

五、Flask学习之MySQL-CSDN博客

1.安装Django

使用如下命令下载Django,会自动根据你的Python版本安装对应版本的Django:

pip install Django

下载完成后进入到你的Python解释器的文件夹(安装Django的那个),然后再Script文件夹中会有一个名为django-admin.exe的文件,这个程序是用来帮助你创建Django项目的,如果没有,说明你的Django没有下载成功。

2.创建Django项目

创建Django项目有两种方式:

  • 使用django-admin.exe程序创建(新手推荐)

    首先打开终端,进入到你想要存放Django项目的文件夹,然后执行以下命令:

    django-admin startproject mysite
    

    注意:如果你没有把django-admin添加到环境变量,就需要把django-admin替换为django-admin的路径,例如:“D:\Anaconda\envs\Djangopro\Scripts\django-admin.exe”

  • 使用Pycharm(专业版)自带的Django项目

    在新建项目里面找到Django,然后输入你的项目名称,存放路径,Python解释器环境,就直接创建好了

两种方式创建出来的项目有区别,后面会讲到有什么区别

上面两种方式创建的目录结构稍有不同,建议使用第一种

mysite/
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        asgi.py
        wsgi.py

[官方文档](编写你的第一个 Django 应用,第 1 部分 | Django 文档 | Django (djangoproject.com))对这些文件的介绍是这样的:

这些目录和文件的用处是:

  • 最外层的 mysite/ 根目录只是你项目的容器, 根目录名称对 Django 没有影响,你可以将它重命名为任何你喜欢的名称。
  • manage.py: 一个让你用各种方式管理 Django 项目的命令行工具。你可以阅读 django-admin 和 manage.py 获取所有 manage.py 的细节。
  • 里面一层的 mysite/ 目录包含你的项目,它是一个纯 Python 包。它的名字就是当你引用它内部任何东西时需要用到的 Python 包名。 (比如 mysite.urls).
  • mysite/__init__.py:一个空文件,告诉 Python 这个目录应该被认为是一个 Python 包。如果你是 Python 初学者,阅读官方文档中的 更多关于包的知识。
  • mysite/settings.py:Django 项目的配置文件。如果你想知道这个文件是如何工作的,请查看 Django 配置 了解细节。
  • mysite/urls.py:Django 项目的 URL 声明,就像你网站的“目录”。阅读 URL调度器 文档来获取更多关于 URL 的内容。
  • mysite/asgi.py:作为你的项目的运行在 ASGI 兼容的 Web 服务器上的入口。阅读 如何使用 ASGI 来部署 了解更多细节。
  • mysite/wsgi.py:作为你的项目的运行在 WSGI 兼容的Web服务器上的入口。阅读 如何使用 WSGI 进行部署 了解更多细节。

3.测试Django

运行项目的方式有两种:

  • 直接使用PyCharm运行本项目
  • 在终端使用命令python manage.py runserver

浏览器打开网址: http://127.0.0.1:8000/ 如果出现下面的小火箭就说明运行成功!

sw

4.创建APP

在终端中运行下列代码:

python manage.py startapp myapp01

可以把APP想象成一个个模块,一个项目可以创建不同的APP,每个APP负责一个功能

在根目录会自动创建一个文件夹名为myapp01,目录结构为:

├─myapp01
│  │  admin.py    # 管理后台(一般不用)
│  │  apps.py     # 不要动
│  │  models.py   # 对数据库进行操作(重要)
│  │  tests.py    # 单元测试
│  │  views.py    # 视图,存放函数的地方 (重要)
│  │  __init__.py
│  │
│  └─migrations    # 不要动
│          __init__.py

5.简单页面

创建完成APP以后,Django并不会感知到APP,需要我们在settings.py文件中进行注册。

打开settings.py,修改INSTALLED_APPS:

INSTALLED_APPS = [
    "django.contrib.admin",
    "django.contrib.auth",
    "django.contrib.contenttypes",
    "django.contrib.sessions",
    "django.contrib.messages",
    "django.contrib.staticfiles",
    "myapp01.apps.Myapp01Config"  # 改成你的APP下的自己名称
]

编写视图和URL的关系:

打开urls.py:改成你网址的url

from django.urls import path
from myapp01 import views

urlpatterns = [
    # path("admin/", admin.site.urls),
    path("index/", views.index)
]

函数path具有四个参数(官方文档),两个必须参数:routeview,两个可选参数:kwargsname

  • route

    route 是一个匹配 URL 的准则(类似正则表达式)。当 Django 响应一个请求时,它会从 urlpatterns 的第一项开始,按顺序依次匹配列表中的项,直到找到匹配的项。

    这些准则不会匹配 GET 和 POST 参数或域名。例如,URLconf 在处理请求 https://www.example.com/myapp/ 时,它会尝试匹配 myapp/ 。处理请求 https://www.example.com/myapp/?page=3 时,也只会尝试匹配 myapp/

  • view

    当 Django 找到了一个匹配的准则,就会调用这个特定的视图函数,并传入一个 HttpRequest对象作为第一个参数,被“捕获”的参数以关键字参数的形式传入。

  • kwargs

    任意个关键字参数可以作为一个字典传递给目标视图函数。

  • name

    为你的 URL 取名能使你在 Django 的任意地方唯一地引用它,尤其是在模板中。这个有用的特性允许你只改一个文件就能全局地修改某个 URL 模式。

然后修改你的views.py里面的代码:

from django.http import HttpResponse

def index(request):
    return HttpResponse("Hello, world!")

运行本项目,在浏览器框中输入http://localhost:8000/index/

然后得到结果:

在这里插入图片描述

6.模板和静态文件

6.1模板

模板是你存放HTML文件的地方,使用Pycharm创建的项目和使用官方提供的方法创建的目录会有所不同。具体可以参见官方文档,去settings.py里面修改。这里以使用官方方法创建的项目目录为例:

在上面==已经创建好的app文件夹中创建文件夹templates==,然后可以新建HTML

在py文件索引HTML文件的时候,会按照appd的注册顺序去寻找

这里新建一个页面user_list.html为例,首先要在urls.py里面添加url:

path("user/list/", views.user_list)

然后去views.py里面创建对应的函数:

from django.http import HttpResponse
from django.shortcuts import render

def user_list(request):
    return render(request, "user_list.html")

随后在templates里面创建文件user_list.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>用户列表</h1>
</body>
</html>

然后运行就能得到结果。

6.2静态文件

同样使用官方法创建的项目为例,static目录是用来存放css、js、照片等插件的地方。已经创建好的app文件夹中创建文件夹static,然后将下载好的js,bootsrap复制过来

myapp01目录结构

├─static
│  ├─css
│  ├─img
│  ├─js
│  └─plugins
│      └─bootstrap-3.4.1-dist
│          ├─css
│          ├─fonts
│          └─js
├─templates

继续美化上面的user_list.html:

{% load static %}  {# 加载static文件夹,方便项目找到static下面的文件 #}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    {# 引入bootsrap #}
    <link rel="stylesheet" href="{% static 'plugins/bootstrap-3.4.1-dist/css/bootstrap.css' %}">
</head>
<body>
<h1>用户列表</h1>
<input type="button" class="btn btn-primary" value="新建">
{#<img src="{% static 'img/1.png' %}" alt="">#}
{# 引入js #}
<script src="{% static 'js/jquery-3.7.1.min.js' %}"></script>
<script src="{% static 'plugins/bootstrap-3.4.1-dist/js/bootstrap.js' %}"></script>
</body>
</html>

得到结果:

image-20240127231223951

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

支付宝开通GPT4.0,最新经验分享

ChatGPT是由OpenAI开发的一种生成式对话模型&#xff0c;具有生成对话响应的能力。它是以GPT&#xff08;Generative Pre-trained Transformer&#xff09;为基础进行训练的&#xff0c;GPT是一种基于Transformer架构的预训练语言模型&#xff0c;被广泛用于各种自然语言处理任…

MYSQL库和表的操作(修改字符集和校验规则,备份和恢复数据库及库和表的增删改查)

文章目录 一、MSYQL库的操作1.连接MYSQL2.查看当前数据库3.创建数据库4.字符集和校验规则5.修改数据库6.删除数据库7.备份和恢复8.查看连接 二、表的操作1.创建表2.查看表结构3.修改表4.删除表 一、MSYQL库的操作 1.连接MYSQL 我们使用下面的语句来连接MSYQL&#xff1a; my…

Android发展历程及安装

目录 发展历程 下载网址 安装过程 发展历程 安卓基于Linux内核&#xff0c;Linux内核相当于房屋的地基 开源不等于免费&#xff0c;不能商用 安卓一般每半年小更新&#xff0c;一年大更新 对应API相当于别名 现在安卓安全性越来越高&#xff0c;性能越来越快&#xff0c…

基于Javaweb开发的二手图书零售系统详细设计【附源码】

基于Javaweb开发的二手图书零售系统详细设计【附源码】 &#x1f345; 作者主页 央顺技术团队 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 文末获取源码联系方式 &#x1f4dd; &#x1f345; 查看下方微信号获取联系方式 承接各种定制系统…

Netty源码一:服务端启动

示例 public class Server {public static void main(String[] args) throws InterruptedException {// todo 创建两个 eventGroup boss 接受客户端的连接, 底层就是一个死循环, 不断的监听事件 处理事件// new NioEventLoopGroup(1); todo 入参1 表示设置boss设置为1个线程,…

Linux系统——点菜名

Linux系统可以点菜啦&#xff01; [rootlocalhost ~]#vim menu1.sh #!/bin/bash sum0 PS3"请输入(1-6):" MENU" 宫保鸡丁 酸菜鱼 鱼香肉丝 佛跳墙 水煮肉片 点菜结束 "select menu in $MENU do case $REPLY in 1) echo $menu 价格是20 let sum20 ;; 2) ec…

一个基于electron自动化桌面应用-流程图构建

前期工作已搞定&#xff0c;现在可以搭建桌面应用了。这个阶段可以结合前面定义好的数据格式构建流程图。 模板 还是使用熟悉的技术栈vite react electron&#xff0c;模板 流程图 官方文档 自定义 节点样式 因为配置化的操作类型较多&#xff0c;因此可以利用自定义节…

数据结构和算法笔记5:堆和优先队列

今天来讲一下堆&#xff0c;在网上看到一个很好的文章&#xff0c;不过它实现堆是用Golang写的&#xff0c;我这里打算用C实现一下&#xff1a; Golang: Heap data structure 1. 基本概念 满二叉树&#xff08;二叉树每层节点都是满的&#xff09;&#xff1a; 完全二叉树&a…

JAVA_Set系列集合:HashSet、LinkedHashSet、TreeSet底层详解

先看看 Set 系列集合的位置&#xff1a; Set 系列集合的特点&#xff1a; 无序&#xff1a;存取顺序不一致 如存入张三、李四、王五。而遍历获取到的是李四, 张三, 王五 不重复&#xff1a;可以去除重复无索引&#xff1a;没有带索引的方法&#xff0c;所以不能使用普通for循…

Redis缓存设计与性能优化

文章目录 多级缓存架构缓存设计缓存穿透缓存失效(击穿)缓存雪崩热点缓存key重建优化缓存与数据库双写不一致 开发规范与性能优化一、键值设计1. key名设计2. value设计bigkey的危害&#xff1a;bigkey的产生&#xff1a;如何优化bigkey 二、命令使用三、客户端使用Redis对于过期…

SpringBoot系列之MybatisPlus实现分组查询

SpringBoot系列之MybatisPlus实现分组查询 我之前博主曾记写过一篇介绍SpringBoot2.0项目怎么集成MybatisPlus的教程&#xff0c;不过之前的博客只是介绍了怎么集成&#xff0c;并没有做详细的描述各种业务场景&#xff0c;本篇博客是对之前博客的补充&#xff0c;介绍在mybat…

GitHub 一周热点汇总第7期(2024/01/21-01/27)

GitHub一周热点汇总第7期 (2024/01/21-01/27) &#xff0c;梳理每周热门的GitHub项目&#xff0c;离春节越来越近了&#xff0c;不知道大家都买好回家的票没有&#xff0c;希望大家都能顺利买到票&#xff0c;一起来看看这周的项目吧。 #1 rustdesk 项目名称&#xff1a;rust…

3个精美的wordpress律师网站模板

暗红色WordPress律师事务所网站模板 演示 https://www.zhanyes.com/qiye/23.html 暗橙色WordPress律师网站模板 演示 https://www.zhanyes.com/qiye/18.html 红色WordPress律所网站模板 演示 https://www.zhanyes.com/qiye/22.html

最新国内GPT4.0使用教程,AI绘画-Midjourney绘画V6 ALPHA绘画模型,GPT语音对话使用,DALL-E3文生图+思维导图一站式解决方案

一、前言 ChatGPT3.5、GPT4.0、GPT语音对话、Midjourney绘画&#xff0c;文档对话总结DALL-E3文生图&#xff0c;相信对大家应该不感到陌生吧&#xff1f;简单来说&#xff0c;GPT-4技术比之前的GPT-3.5相对来说更加智能&#xff0c;会根据用户的要求生成多种内容甚至也可以和…

STM32实现软件IIC协议操作OLED显示屏(2)

时间记录&#xff1a;2024/1/27 一、OLED相关介绍 &#xff08;1&#xff09;显示分辨率128*64点阵 &#xff08;2&#xff09;IIC作为从机的地址0x78 &#xff08;3&#xff09;操作步骤&#xff1a;主机先发送IIC起始信号S&#xff0c;然后发送OLED的地址0x78&#xff0c;然…

Unity 光照

光照烘培 光照模式切换为 Baked 或 Mixed&#xff0c;Baked 模式完全使用光照贴图模拟光照&#xff0c;运行时修改光照颜色不生效&#xff0c;Mixed 模式也使用光照贴图&#xff0c;并且进行一些实时运算&#xff0c;运行时修改光照颜色会生效 受光照影响的物体勾选 Contribute…

【RH850U2A芯片】Reset Vector和Interrupt Vector介绍

目录 前言 正文 1. 什么是Reset Vector 1.1 S32K144芯片的Reset Vector 1.2 RH850芯片的Reset Vector 2. 什么是Interrupt Vector 2.1 S32K144芯片的Interrupt Vector 2.2 RH850芯片的Interrupt Vector 3. Reset Vector等价于Interrupt Vector吗 4. 总结 前言 最近在…

MongoDB实战

1.MongoDB介绍 1.1 什么是MongoDB MongoDB是一个文档数据库&#xff08;以JSON 为数据模型&#xff09;&#xff0c;由C语言编写&#xff0c;旨在为WEB应用提供可扩展的高性能数据存储解决方案。 文档来自于"JSON Document"&#xff0c;并非我们一般理解的 PDF&…

【RTP】webrtc 学习3: webrtc对h264的rtp解包

rtp_rtcp\source\video_rtp_depacketizer_h264.cc【RTP】webrtc 学习2: webrtc对h264的rtp打包 中分析了打包过程的代码,这样再来看解析过程的源码就容易多了:本代码主要基于m79,m98类似。解析ParseFuaNalu 第一个字节只取 FNRI第二个字节取 原始的nalu type识别第一个分片…

【机器学习笔记】1 线性回归

回归的概念 二分类问题可以用1和0来表示 线性回归&#xff08;Linear Regression&#xff09;的概念 是一种通过属性的线性组合来进行预测的线性模型&#xff0c;其目的是找到一条直线或者一个平面或者更高维的超平面&#xff0c;使得预测值与真实值之间的误差最小化&#x…