从零开始的Django框架入门到实战教程(内含实战实例) - 01 创建项目与app、加入静态文件、模板语法介绍(学习笔记)

这篇具有很好参考价值的文章主要介绍了从零开始的Django框架入门到实战教程(内含实战实例) - 01 创建项目与app、加入静态文件、模板语法介绍(学习笔记)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  Django是目前比较火爆的框架,之前有在知乎刷到,很多毕业生进入大厂实习后因为不会git和Django框架3天就被踢掉了,因为他们很难把自己的工作融入到整个组的工作中。因此,我尝试自学Django并整理出如下笔记。
  在这部分,我将从Django的安装讲起,从创建项目到制作一个简单的页面(跑通流程),再到加入网页,介绍Django的模板语法。最后利用所学完成一个小的网页展示。

1. 安装Django

  django跟flask不一样,它pip install 之后除了会再Libs/site-package里面添加django包之外,还会在Scripts中间剪一个django-admin.exe文件,这个文件是个工具,能够帮我们直接创建django项目。主要是因为django需要创建的文件文件夹比较,直接这个用这个比较方便,可以自动创建。

2. 创建项目(startproject)

2.1 创建项目

​ 打开中断并进入项目想创建的目录。注意,第二条指令是需要保证python已经加入到电脑的环境变量中之后的。

cd Django
django-admin startproject first_try

从零开始的Django框架入门到实战教程(内含实战实例) - 01 创建项目与app、加入静态文件、模板语法介绍(学习笔记)

2.2 介绍项目文件

first_try
	manage.py		// 好东西,项目管理、启动、创建app、数据管理都在这里,不要动它
    first_try
    	__init__.py
        settings.py	// 项目的配置文件,很多操作也在这里(链接数据库)
        urls.py		// url和python函数的对应关系都在这里,操作基本都在这里
        asgi.py		// 异步接受网络请求的
        wsgi.py		// 同步接受网络请求的

2.3 APP(startapp)

​ app不是应用,是功能的划分。

​ 创建是靠manage.py创建的,终端输入

python manage.py startapp application01

从零开始的Django框架入门到实战教程(内含实战实例) - 01 创建项目与app、加入静态文件、模板语法介绍(学习笔记)

appliction01
	__init__.py
	admin.py			// django默认的自带后台管理
	apps.py				// app启动类
	migrations			// 数据库变更记录
		__init__.py
	models.py			// 数据库的操作在这里
	test.py				// 单元测试
	views.py			// first_try里面的url里的函数一般都要在这里找(常用)

3. 走通流程(urls, views, runserver)

3.1 第一个页面

​ 在first_try/settings.py中找到 INSTALLED_APPS,加入app的config。这里是加入配置文件。

从零开始的Django框架入门到实战教程(内含实战实例) - 01 创建项目与app、加入静态文件、模板语法介绍(学习笔记)

​ 写一个index放到视图中,相当与在这里写了一个页面。

从零开始的Django框架入门到实战教程(内含实战实例) - 01 创建项目与app、加入静态文件、模板语法介绍(学习笔记)

​ 修改Django自带urlpatterns,相当于在这里将页面加入到网页中。

从零开始的Django框架入门到实战教程(内含实战实例) - 01 创建项目与app、加入静态文件、模板语法介绍(学习笔记)

​ 在终端执行启动程序,我们看看结果。

python manage.py runserver 9211

从零开始的Django框架入门到实战教程(内含实战实例) - 01 创建项目与app、加入静态文件、模板语法介绍(学习笔记)

3.2 多个页面

​ 在正常情况下,一个大的项目包含的页面何止百个,这一个页面当然不能满足我们的需求。我们可以尝试写多个页面。

​ view.py

# *coding:utf-8*
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.

def index(request):
    return HttpResponse(r"Hey man, U can do it!")

def Olsen(request):
    return HttpResponse(r"I love Olsen!!!")

def user(request):
    return HttpResponse(r"User")

​ urls.py

from django.urls import path
from application01 import views
urlpatterns = [
    path('index/', views.index),
    path('index/Olsen', views.index),
    path('user/', views.index)
]

​ 查看效果,可以看到我们的三个网页都在这里了。

从零开始的Django框架入门到实战教程(内含实战实例) - 01 创建项目与app、加入静态文件、模板语法介绍(学习笔记)

4. 网页

4.1 加入网页(templates, render)

​ 正常情况下我们访问的网页都是花里胡哨的,是由http文件展现,完全不是现在这样的简单的几行字,那应该怎么实现这个功能呢?

​ 首先我们先要创建一个templates的文件,文件下面放入我们需要用到的html文件。注意,这里的文件名一定是templates,这个是django默认的。

从零开始的Django框架入门到实战教程(内含实战实例) - 01 创建项目与app、加入静态文件、模板语法介绍(学习笔记)

​ 然后把templates加入到路径中,因为默认情况下会放到app下的templates里面,我们这个templates是再根目录里面的:

从零开始的Django框架入门到实战教程(内含实战实例) - 01 创建项目与app、加入静态文件、模板语法介绍(学习笔记)

​ 我们随便写个html做实验:

从零开始的Django框架入门到实战教程(内含实战实例) - 01 创建项目与app、加入静态文件、模板语法介绍(学习笔记)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div>I love Olsen!!!</div>
</body>
</html>

​ 在views.py中加入这个网页。在这里我们使用render函数,第一个参数为request,第二个参数是文件名,第三个参数可以不要,是把文件中用{{}}标起来的内容替换的功能。

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

​ 再把这个添加到url.py里面:

urlpatterns = [
    path('index/', views.index),
    path('index/Olsen', views.index),
    path('user/', views.index),
    path('Clarknb/', views.Clarknb),
]

从零开始的Django框架入门到实战教程(内含实战实例) - 01 创建项目与app、加入静态文件、模板语法介绍(学习笔记)

4.2加入图片、css、js等静态文件

  • 图片

​ 先创建静态目录(static),再将目录添加到路径中。注意:一定要叫static,配置里就是这么叫的。

从零开始的Django框架入门到实战教程(内含实战实例) - 01 创建项目与app、加入静态文件、模板语法介绍(学习笔记)

​ 效果如下:

从零开始的Django框架入门到实战教程(内含实战实例) - 01 创建项目与app、加入静态文件、模板语法介绍(学习笔记)

  • css、js、bootstrap等操作同上

​ css文件操作同上。注意:可以用{% load static %}加载static文件,然后再引用。这种方法需要在每个文件的头部都手动load一次,比较麻烦,所以我们尝试另一种办法:在settings.py中的TEMPLATES/OPTIONS添加'builtins':['django.templatetags.static']。这种写法的好处是以后改代码好改,因为这种读法是在配置文件中找这个静态的路径,改的时候不需要像之前绝对路径那样一个一个改。

从零开始的Django框架入门到实战教程(内含实战实例) - 01 创建项目与app、加入静态文件、模板语法介绍(学习笔记)

​ 没有报错,证明引入成功了。

从零开始的Django框架入门到实战教程(内含实战实例) - 01 创建项目与app、加入静态文件、模板语法介绍(学习笔记)

5. 模板语法

5.1 基础语法与循环

​ 为了方便平时的使用,Django是有自己的模板语言的,说实话有些地方跟vue挺像的。我们修改之前的例子尝试一些Django的模板语法。这里用到了之前提到的render的第三个参数。

​ 主要用到的知识点有:

  • render第三个参数的使用
  • 列表的使用
  • 字典的使用
  • 循环

​ Clarknb.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="{% static 'js/jquery.js' %}" type="text/javascript"></script>
    <script src="{% static 'plugins/bootstrap.min.js' %}" type="text/javascript"></script>
</head>
<body>
    <div>I love Olsen!!!</div>
    <div>test1:<br>{{n1}}</div>
    <div>{{n2}}</div>
<!--    调用列表-->
    <div><br>test2:<br>{{n2.0}}</div>
    <div>{{n2.2}}</div>
<!--    调用字典-->
    <div>
        <br>test3:<br>
        {{n3.hyq}}<br>
        {{n3.zlp}}
    </div>
<!--    列表的循环-->
    <div><br>test4:</div>
    <div>
        {% for item in n2 %}
            <span>{{item}}<br></span>
        {% endfor %}
    </div>
<!--    字典的循环-->
    <div><br>test5:</div>
    <div>
        {% for k,v in n3.items %}
            <li>{{k}}={{v}}</li>
        {% endfor %}
    </div>
    <div><br>test6:</div>
    {% for item in n4 %}
<!--        两种写法都可以-->
<!--    写法1-->
        {% for k,v in item.items %}
            <li>{{k}}={{v}}</li>
        {% endfor %}
<!--    写法2-->
<!--    <li>{{item.zlp}}=>{{item.hyq}}</li>-->
<!--        <br>-->
    {% endfor %}
    <img src="{% static 'img/Olsen01.jpg' %}" alt="" style="width:100%">
</body>
</html>

​ views.py:

# *coding:utf-8*
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def Clarknb(request):
    name1 = "Clark"
    name2 = ["Olsen", "ClarkHu", "LLGreat"]
    name3 = {"hyq": 1, "zlp": 2}
    name4 = [{"hyq": 1, "zlp": 2},
             {"hyq": 3, "zlp": 6},
             {"hyq": 4, "zlp": 9}]
    return render(request, "Clarknb.html", {"n1": name1, "n2": name2, "n3": name3, "n4": name4})

​ 显示结果如下:

从零开始的Django框架入门到实战教程(内含实战实例) - 01 创建项目与app、加入静态文件、模板语法介绍(学习笔记)

5.2 判断语句

​ Django也提供了判断语法:

  • if
  • elif
  • else

​ views.py不变

​ Clarknb.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="{% static 'js/jquery.js' %}" type="text/javascript"></script>
    <script src="{% static 'plugins/bootstrap.min.js' %}" type="text/javascript"></script>
</head>
<body>
<!--    判断-->
    {% if n1 == "Clark" %}
        <h1>ClarkHu NB!!</h1>
    {% elif n1 == "Olsen" %}
        <h1>I love Olsen</h1>
    {% else %}
        <h1>Brand new ending!!</h1>
    {% endif %}
</body>
</html>

从零开始的Django框架入门到实战教程(内含实战实例) - 01 创建项目与app、加入静态文件、模板语法介绍(学习笔记)

5.3注意点

从零开始的Django框架入门到实战教程(内含实战实例) - 01 创建项目与app、加入静态文件、模板语法介绍(学习笔记)

6. 案例

​ 根据所学,我们已经可以做到从某个网页爬取信息并将信息显示到我们自己网页上了。这里以联通的新闻为例(中国联通 (chinaunicom.com.cn))。实例中的新闻内容被迫打码,不然会被判定图片违规……

​ 我们首先获取发出请求的URL:
从零开始的Django框架入门到实战教程(内含实战实例) - 01 创建项目与app、加入静态文件、模板语法介绍(学习笔记)

​ 返还的结果可以在response中查看:
从零开始的Django框架入门到实战教程(内含实战实例) - 01 创建项目与app、加入静态文件、模板语法介绍(学习笔记)

​ 接下来我们用爬虫模拟这个步骤:

​ views.py(记得改User-Agent

def getnews(request):
    import requests
    head = {
        "User-Agent": bulabula
    }
    res = requests.get("http://www.chinaunicom.com.cn/api/article/NewsByIndex/2/2022/06/news", headers=head)
    data_list = res.json()
    return render(request, "news.html", {"n1": data_list})

​ news.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>news</title>
</head>
<body>
    <h1>
        联通新闻中心
    </h1>
    {% for item in n1 %}
        <ul>
            {% for k, v in item.items %}
                <li>{{v}}</li>
            {% endfor %}
        </ul>
    {% endfor %}
</body>
</html>

​ urls.py

"""first_try URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/3.2/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.urls import include, path
    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path
from django.conf.urls import url
from django.contrib import admin
from django.urls import include
from application01 import views
from django.shortcuts import render
urlpatterns = [
    path('index/', views.index),
    path('index/Olsen', views.index),
    path('user/', views.index),
    path('Clarknb/', views.Clarknb),
    path('news/', views.getnews),
]

​ 结果很糙,但是跑通了,后续只要选取自己喜欢的信息展示就可以了。

从零开始的Django框架入门到实战教程(内含实战实例) - 01 创建项目与app、加入静态文件、模板语法介绍(学习笔记)文章来源地址https://www.toymoban.com/news/detail-493880.html

到了这里,关于从零开始的Django框架入门到实战教程(内含实战实例) - 01 创建项目与app、加入静态文件、模板语法介绍(学习笔记)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android SDK安装教程(超详细),从零基础入门到实战,从看这篇开始

    前言 在使用appnium的时候,除了安装JDK之外,也需要安装Android SDK。那么,正确安装Android SDK是怎样的呢,跟着小编继续往下看。 安装Android SDK和环境配置 1.安装Android SDK 首先打开官网:https://www.androiddevtools.cn/ 选中导航中的Android SDK工具,再点击SDK Tools。 网页会自动往下翻,

    2024年02月14日
    浏览(59)
  • 【Spring教程31】SSM框架整合实战:从零开始学习SSM整合配置,如何编写Mybatis SpringMVC JDBC Spring配置类

    欢迎大家回到《Java教程之Spring30天快速入门》,本教程所有示例均基于Maven实现,如果您对Maven还很陌生,请移步本人的博文《如何在windows11下安装Maven并配置以及 IDEA配置Maven环境》,本文的上一篇为《Rest风格简介与RESTful入门》 前面我们已经把Mybatis、Spring和SpringMVC三个框架

    2024年02月04日
    浏览(72)
  • Kubernetes超详细教程,一篇文章帮助你从零开始学习k8s,从入门到实战

    k8s github地址:https://github.com/kubernetes/kubernetes 官方文档:https://kubernetes.io/zh-cn/docs/home/ k8s,全程是 kubernetes,这个名字源于希腊语,意为\\\"舵手\\\"或\\\"飞行员” k8s 这个缩写是因为 k 和 s 之间有八个字符 Google 在2014年开源了 k8s 项目,k8s 是一个用于 自动化部署、扩展和管理容器化

    2024年04月14日
    浏览(88)
  • 【Kubernetes】k8s入门及使用(从零开始做实例)

    1.1 选择安装方式 1.minikube 2.使用kubeadm 是k8s官方推荐的安装k8s的方式 (推荐) 3.二进制安装 4.第3方的部署工具: rancher等 今天我们选择比较具有实用性的kubeadm的方式进行k8s的安装和部署。 1.2 集群的架构 1.单master多node 2.多master多node ——高可用( 3个master 3个node 1台负载均衡(

    2024年02月04日
    浏览(46)
  • 从零开始的QQ开放平台机器人-------Gensokyo框架部署运行开发教程合集

    大家好,我是早苗狐,一名有5年QQ机器人开发运营经验的机器人爱好者. 随着QQ为机器人开放了越来越多的接口能力,基于QQ开放平台Api能力的新框架逐渐应运而生, 本文就带给大家如何通过一系列操作,部署,运行,维护和开发一个新的QQ机器人. QQ开放平台地址: QQ开放平台 QQ开放平台

    2024年02月03日
    浏览(95)
  • SpringCloud--从零开始搭建微服务基础环境入门教程【一】

    😀前言 本篇博文是关于SpringCloud–从零开始搭建微服务基础环境入门教程【一】,希望你能够喜欢😉 🏠个人主页:晨犀主页 🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到大家,您的满意是我的动力😉😉 💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来

    2024年02月10日
    浏览(53)
  • 【React 入门实战篇】从零开始搭建与理解React应用-二、前置准备与环境搭建

    二、前置准备与环境搭建 2.1 安装Node.js与npm 在开始React开发之前,我们需要确保Node.js和npm(Node Package Manager)已经安装在我们的计算机上。Node.js是一个基于Chrome V8引擎的JavaScript运行环境,而npm则是Node.js的包管理器,用于安装和管理JavaScript库和工具。 安装Node.js: 访问Node.js官

    2024年04月10日
    浏览(84)
  • [前端系列第3弹]JS入门教程:从零开始学习JavaScript

    本文将带领大家,从零开始学习JavaScript,fighting~ 目录 一、JavaScript简介 二、变量和数据类型 三、注释和分号 四、算术运算符 五、表达式和语句 六、代码块和作用域 七、函数(最重要)          JavaScript(简称JS)是一种运行在浏览器中的脚本语言,它可以让网页变得

    2024年02月13日
    浏览(65)
  • PyCharm下载安装教程(超详细),从零基础入门到精通,从这篇开始

    1、Pycharm 简介 2、Pycharm下载 3、环境变量的配置 4、Pycharm的使用 PyCharm是一种Python IDE(Integrated Development Environment,集成开发环境),带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、项目管理、代码跳转、智能提示、自动完成、单元测

    2024年02月11日
    浏览(57)
  • 【React 入门实战篇】从零开始搭建与理解React应用-三、React核心概念与基础语法

    三、React核心概念与基础语法 3.1 JSX语法详解 JSX是React中的一个语法糖,它允许开发者在JavaScript代码中编写类似HTML的标记。这种语法使得开发者能够以一种声明式的方式描述界面,提高了代码的可读性和可维护性。 JSX的语法规则: 元素创建 :使用尖括号 来创建元素,就像在

    2024年04月08日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包