【Django学习笔记(十)】Django的创建与运行

Django的创建与运行

  • 前言
  • 正文
    • 1、安装Django
    • 2、创建项目
      • 2.1 基于终端创建项目
      • 2.2 基于Pycharm创建项目
      • 2.3 两种方式对比
    • 3、默认项目文件介绍
    • 4、APP
    • 5、启动运行Django
      • 5.1 激活App
      • 5.2 编写URL和视图函数对应关系
      • 5.3 启动Django项目
        • 5.3.1 命令行启动
        • 5.3.2 Pycharm启动
        • 5.3.3 views.py
        • 5.3.4 urls.py
      • 5.4 templates模板
        • 5.4.1 在 views.py 中使用 render()
        • 5.4.2 在 app01 目录下创建 templates 目录
        • 5.4.3 在 templates 目录下创建 html 文件
        • 5.4.4 注意事项
      • 5. 5 静态文件
        • 5.5.1 在 app01 目录下创建 static 目录
        • 5.5.2 html 中引入图片
        • 5.5.3 创建静态文件的步骤
          • 5.5.3.1 ststic目录
          • 5.5.3.2 引用静态文件

前言

Django,作为一款高级 Python Web 框架,以其优雅的设计、清晰的架构和丰富的功能,赢得了广大开发者的青睐。本文旨在提供一个系统而深入的 Django 运行学习指南,从创建到运行,全面解析 Django 的核心概念和关键技术。

正文

1、安装Django

pip install django

在 Python 的安装目录下:

python38

  • python.exe

  • Scripts

      - pip.exe  
      - django-admin.exe 【工具,创建Django项目中的文件和文件夹】
    
  • Lib

     - 内置模块
     - site-packages:
     
       - openpyxl
       - python-docx
       - flask
       - django 【框架的源码】
    

在这里插入图片描述
在这里插入图片描述

2、创建项目

2.1 基于终端创建项目

  • 打开终端

  • 进入某个目录(项目放在哪里)

  • 执行命令创建项目

    E:\Python38\Scripts\django-admin.exe startproject 项目名称
    如果 E:\Python38\Scripts\django-admin.exe 已经加入环境变量
    django-admin.exe startproject 项目名称
    在这里插入图片描述
    在这里插入图片描述

2.2 基于Pycharm创建项目

注意:不能是社区版pycharm
因为电脑上没有专业版的Pycharm,不做展示

2.3 两种方式对比

  • 命令行,创建的项目是标准的
  • Pycharm,在标准的基础是默认增加了点东西
    • 创建的了一个 templates 的目录(删除)
    • settings.py 中增加了一行 os.path.join(BASE_DIR,'templates') (删除)

3、默认项目文件介绍

mysite

  • manage.py 【项目的管理:启动项目、创建app、数据管理】【不要动】
  • mysite
    • init.py
    • asgi.py【接收网络请求】【不要动】
    • settings.py 【项目配置文件:数据库的账号密码等】【重要
    • urls.py 【url 和函数的对应关系】【重要
    • wsgi.py【接收网络请求】【不要动】

4、APP

项目的一般结构:

  • app,用户管理
  • app,订单管理
  • app,后台管理
  • app,网站
  • app,API

  • 如果开发的项目比较简洁,用不到多 app,项目下创建一个 app 即可

mysite

  • manage.py 【项目的管理:启动项目、创建app、数据管理】【不要动】
  • mysite
    • init.py
    • asgi.py【接收网络请求】【不要动】
    • settings.py 【项目配置文件:数据库的账号密码等】【重要
    • urls.py 【url 和 函数的对应关系】【重要
    • wsgi.py【接收网络请求】【不要动】
  • app01
    • init.py
    • admin.py【Django默认提供了admin后台管理的功能】【固定,不要动】
    • apps.py【app启动类】【固定,不要动】
    • models.py【对数据库操作】【重要
    • tests.py【单元测试】【固定,不要动】
    • views.py【函数】【重要
    • migrations【数据库字段变更记录】【固定,不要动】
      • init.py

5、启动运行Django

5.1 激活App

  1. 在 Django 的项目文件夹中,打开 setting.py 文件:
    在这里插入图片描述

  2. 在 App01 文件夹中,打开 apps.py 文件,找到 Class 的名称
    在这里插入图片描述

  3. 在列表最后加上app01.apps.App01Config
    在这里插入图片描述

5.2 编写URL和视图函数对应关系

  1. 在项目文件 urls.py 中编写对应关系
    在这里插入图片描述

  2. 在 urls.py 中 导入 from tDjangoDemo.mysite.app01 import views

  3. 对应 url 和函数 :path('index/', views.index),
    在这里插入图片描述

  4. 在 views.py 中编写视图函数
    在这里插入图片描述

5.3 启动Django项目

5.3.1 命令行启动
python manage.py runserver
5.3.2 Pycharm启动

点击程序的运行按钮

在这里插入图片描述
在网址后面加 /index/:
在这里插入图片描述

5.3.3 views.py
from django.shortcuts import render, HttpResponse


# Create your views here.
# 需要有默认参数request
def index(request):
    return HttpResponse("欢迎使用")


def user_list(request):
    return HttpResponse("用户列表")


def uesr_add(request):
    return HttpResponse("添加用户")
5.3.4 urls.py
from django.contrib import admin
from django.urls import path

from app01 import views

urlpatterns = [
    # path('admin/', admin.site.urls),

    # www.xxx.com/index/  ->  函数
    path("index/", views.index),
    path("userlist/", views.user_list),
    path("useradd/", views.uesr_add),
]

在这里插入图片描述
在这里插入图片描述

5.4 templates模板

5.4.1 在 views.py 中使用 render()
def user_list(request):
    return render(request, "user_list.html")
5.4.2 在 app01 目录下创建 templates 目录
5.4.3 在 templates 目录下创建 html 文件
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>用户列表</h1>
</body>
</html>

在这里插入图片描述

5.4.4 注意事项
def user_list(request):
    # 1、如果在 settings.py 中添加 os.path.join(BASE_DIR,'templates') 优先去项目根目录的 templates 中寻找
    # 2、去 app 目录下的 templates 目录寻找 user_list.html(根据app的注册顺序,逐一去 templates 目录下寻找)
    return render(request, "user_list.html")
  1. 如果在 settings.py 中添加 os.path.join(BASE_DIR,'templates') 优先去项目根目录的 templates 中寻找
  2. 去 app 目录下的 templates 目录寻找 user_list.html(根据app的注册顺序,逐一去 templates 目录下寻找)

5. 5 静态文件

在开发过程中,一般将:

  • 图片
  • CSS
  • JS
    都会当作静态文件处理
5.5.1 在 app01 目录下创建 static 目录

并随意添加一个 png 文件
在这里插入图片描述

5.5.2 html 中引入图片
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <img src="/static/1.png" alt="">
    <h1>用户列表</h1>
</body>
</html>

在这里插入图片描述

5.5.3 创建静态文件的步骤
5.5.3.1 ststic目录

在 app 目录下创建 ststic 文件夹

在这里插入图片描述

5.5.3.2 引用静态文件

在这里插入图片描述

<!DOCTYPE html>
{% load static %}

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="{% static 'plugins/bootstrap-3.4.1/css/bootstrap.css' %}">
</head>
<body>
    <img src="{% static 'img/1.png' %}" alt="">
    <h1>用户列表</h1>
    <input type="text" class="btn btn-primary" value="新建"/>

<script src="{% static 'js/jquery-3.7.1.min.js' %}"></script>
<script src="{% static 'plugins/bootstrap-3.4.1/js/bootstrap.js' %}"></script>
</body>
</html>

在这里插入图片描述

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

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

相关文章

Web3智能物联网:科技连接的未来世界

在当今科技飞速发展的时代&#xff0c;Web3智能物联网正逐渐成为人们关注的焦点。随着区块链技术的不断成熟和普及&#xff0c;以及物联网的普及和应用&#xff0c;Web3智能物联网作为二者的结合&#xff0c;将为未来的数字世界带来革命性的变化。本文将深入探讨Web3智能物联网…

【JavaEE 初阶(三)】多线程代码案例

❣博主主页: 33的博客❣ ▶️文章专栏分类:JavaEE◀️ &#x1f69a;我的代码仓库: 33的代码仓库&#x1f69a; &#x1faf5;&#x1faf5;&#x1faf5;关注我带你了解更多线程知识 目录 1.前言2.单例模式2.1饿汉方式2.2饿汉方式 3.阻塞队列3.1概念3.2实现 4.定时器4.1概念4.…

Linux常用名命令

Linux是一款免费的操作系统&#xff0c;用户可以通过网络或其他途径免费获得&#xff0c;并可以任意修改源代码&#xff0c;这是其他操作系统做不到的&#xff0c;Ubuntu&#xff0c;Centos。 linux中&#xff0c;一切皆文件。 一些重要的目录 / 根目录&#xff0c;所有文件都放…

2024-05-08 精神分析-对损失和挫败的强烈易感性-分析

摘要: 对损失的强烈的易感性&#xff0c;会在遭受损失或者挫败的时候&#xff0c;表现的极其敏感&#xff0c;这个过程主要是在创业的过程中更加强烈的表现并带来巨大的影响。必须要对其进行彻底的分析&#xff0c;并保持对此行为的长期的警惕。 所谓前事不忘后事之师&#x…

JAVA IO/NIO 知识点总结

一、常见 IO 模型简介 1. 阻塞IO模型 最传统的一种IO模型&#xff0c;即在读写数据过程中会发生阻塞现象。当用户线程发出IO请求之后&#xff0c;内核会去查看数据是否就绪&#xff0c;如果没有就绪就会等待数据就绪&#xff0c;而用户线程就会处于阻塞状态&#xff0c;用户线…

WIFI模块UDP电脑端调试

一&#xff0c;两端都是电脑端 1&#xff0c;电脑本机的IP地址 192.168.137.1 2&#xff0c;新建两个不同的连接&#xff0c;注意端口 二&#xff0c;WIFI 模块和电脑端连接 1&#xff0c;设置模块端目标IP和端口&#xff0c;电脑端只接收数据的话&#xff0c;IP、端口可随…

effective python学习笔记_pythonic思维

优缺点 书的好处是很多新特性提高了可读性代码性等各方面性能&#xff0c;缺点是新特性和py老版本不兼容&#xff0c;老版本可能没有这些新特性&#xff0c;如果用了py早期版本&#xff0c;需要考虑替代方案 查py版本 import sys sys.version sys.version_info 遵循PEP8 …

python turtle

名字动画 #SquareSpiral1.py import turtle t turtle.Pen() turtle.bgcolor("black")my_nameturtle.textinput("输入你的姓名","你的名字&#xff1f;") colors["red","yellow","purple","blue"] for…

文章解读与仿真程序复现思路——电力自动化设备EI\CSCD\北大核心《考虑热动态的综合能源系统碳排放流建模与分析》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

浅谈智能电气火灾监控系统的设计及应用

摘要&#xff1a;致电气火灾的原因是多方面的&#xff0c;主要成因包括漏电、绝缘层老化、短路、电火花密集、接地发生故障、电气设备自然、接触不良和电流超负荷等。文章分析电气火灾的成因&#xff0c;并探索电气火灾监控系统的设计方案与注意事项。 关键词&#xff1a;电气…

【数据结构】闲谈A股实时交易的数据结构-队列

今天有点忙&#xff0c;特意早起&#xff0c;要不先写点什么。看到个股的红红绿绿&#xff0c; 突然兴起&#xff0c;要不写篇文章分析下A股交易的简易版数据结构。 在A股实时股票交易系统中&#xff0c;按照个人理解&#xff0c;大致会用队列来完成整个交易。队列&#xff08;…

WordPress原创插件:当日24小时发布文章标题变红

WordPress原创插件&#xff1a;当日24小时发布文章标题变红 <?php// 添加自定义样式 function title_red_plugin_styles() {$current_time time();$post_time get_the_time(U);$time_difference $current_time - $post_time;if ($time_difference < 86400) {echo&l…

SSH的魅力:为何它成为远程访问的首选

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《Linux &#xff1a;从菜鸟到飞鸟的逆袭》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、SSH简介 2、SSH的历史与发展 3、SSH的主要用…

每日OJ题_贪心算法三③_力扣45. 跳跃游戏 II(dp解法+贪心解法)

目录 力扣45. 跳跃游戏 II 解析代码1_动态规划 解析代码2_贪心 力扣45. 跳跃游戏 II 45. 跳跃游戏 II 难度 中等 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说&#xff0c;如果你在 num…

课程作业管理系统,基于 SpringBoot+Vue+MySQL 开发的前后端分离的课程作业管理系统设计实现

目录 一. 前言 二. 功能模块 2.1. 管理员功能模块 2.2. 教师功能模块 2.3. 学生功能模块 三. 部分代码实现 四. 源码下载 一. 前言 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势…

Java并发编程: Synchronized锁升级

文章目录 一、jdk8 markword实现表二、使用工具来查看锁升级 一、jdk8 markword实现表 new -> 偏向锁 -> 轻量级锁&#xff08;自旋锁、自适应自旋锁&#xff09;-> 重量级锁&#xff1a; 偏向锁和轻量级锁都是用户空间完成的。重量级锁是需要向内核申请的。 synchr…

Jenkins +配置邮件 centos8.5 安装部署 运维系列一

1 jenkins的war包下载地址: Download and deploy 2 xftp 等方式上传到服务器 #安装jdk tar zxvf jdk-11.0.8_linux-x64_bin.tar.gz mv jdk-11.0.8/ /usr/local/jdk vim /etc/profile export JAVA_HOME/usr/local/jdk export PATH$JAVA_HOME/bin:$PATH CLASSPATH.:$JAVA_…

【Qt QML】ComboBox组件

ComboBox 是一个组合的按钮和弹出列表。它提供了一种以最小的屏幕空间呈现选项列表给用户的方式。ComboBox 使用数据模型填充。数据模型通常是一个 JavaScript 数组、一个 ListModel 或一个整数&#xff0c;但也支持其他类型的数据模型。 下面是一个简单的使用方式。 import …

odoo实施之各种导航设计

odoo各种基础能力&#xff1a;活动、讨论 玩转odoo&#xff0c;真有玩的体验 odoo消息提醒能力 odoo 讨论模块 odoo 通过new message触发任务 安装odoo studio进行拖拉拽设计 查阅官方文档&#xff0c;向官方提issue 欧洲和美国&#xff0c;虽然都是英语&#xff0c;但日期格式…

【数据结构与算法】力扣 102. 二叉树的层序遍历

题目描述 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 示例 1&#xff1a; 输入&#xff1a; root [3,9,20,null,null,15,7] 输出&#xff1a; [[3],[9,20],[15,7]]示例 2&#x…