Django开发实例总结(入门级、4.2.6、详细)

news2024/11/28 0:46:05

 

目录

概述

Django的核心组件包括

Django的项目结构

创建工程(4.2.6)

实例一:Hello world

实例二:访问一个自定义主页

实例三:通过登录跳转到主页

实例四:主页添加静态文件,包含js、css、图片

实例五:访问api多级路径,传入json参数计算结果


概述

Django是一个用于构建Web应用程序的高级Python Web框架。它遵循了MVC(Model-View-Controller)的软件设计模式,并采用了MTV(Model-Template-View)的变种。

模型(Model)、模板(Template)、视图(Views)。

Django的核心组件包括

  1. Models(模型):模型定义了应用程序中使用的数据结构和数据库表的结构。它们通过Django的ORM(对象关系映射)与数据库进行交互。通过定义模型类,您可以创建数据库表以及与之相关的字段和方法。Django的ORM(对象关系映射)提供了一个简单的方式来操作数据库,无需编写原始的SQL查询语句。

  2. Views(视图):视图负责处理HTTP请求,并返回HTTP响应。它们从模型中获取数据,并将其传递给模板进行渲染。在Django中,视图函数或基于类的视图处理来自URL的请求,并从模型层获取所需的数据,然后将其传递给模板层进行渲染。视图可以返回HTML页面、JSON数据或其他响应类型。

  3. Templates(模板):模板层负责生成最终的用户界面。模板是用于呈现数据的HTML文件。它们允许您将动态数据嵌入到静态HTML中,并使用Django的模板语言来处理逻辑和控制流。Django使用模板引擎将动态数据与静态HTML代码分离。您可以在模板中使用变量、循环、条件语句等,以便根据需要动态生成页面

  4. URLconf(URL配置):URLconf负责将URL映射到视图函数。它定义了URL模式和对应的视图函数。URL调度器(或路由)将URL映射到相应的视图函数或类。在Django中,您可以通过在URL配置文件中定义URL模式来设置路由规则。URL调度器根据请求的URL确定要执行的视图,帮助 Django 确定哪个视图应该处理特定的 URL 请求

  5. Middleware(中间件):中间件是Django的请求/响应处理机制的一部分。它可以在请求到达视图之前或响应发送给客户端之前执行特定的操作。中间件是位于Django请求和响应处理过程中的一个插件。例如,中间件可以用于身份验证、请求日志记录、跨站点请求伪造(CSRF)防护等

  6. Forms(表单):Django 表单帮助您创建 HTML 表单,并处理用户提交的数据。它们可以验证输入数据,并将其转换为模型对象。表单可以验证用户输入并将其保存到数据库中。

  7. Admin(管理后台):Django提供了一个强大的管理后台,可以轻松地管理数据库模型和数据。自动创建的管理界面允许管理员管理数据库中的数据,包括添加、编辑和删除记录。

  8. 静态文件处理:Django 提供了管理和服务静态文件(如 CSS、JavaScript)的功能。

此外,Django还包括许多其他组件和功能,如国际化、安全性等。

Django的项目结构

myproject/
    manage.py
    myproject/
        __init__.py
        settings.py
        urls.py
        wsgi.py
    myapp/
        migrations/
            __init__.py
        __init__.py
        admin.py
        apps.py
        models.py
        tests.py
        views.py
        urls.py
        templates/
            myapp/
                index.html
  • manage.py:用于管理Django项目的命令行工具。
  • myproject/:项目的主目录,包含项目的配置和URL设置。
  • myapp/:应用程序的目录,包含模型、视图、模板等。
  • migrations/:包含数据库迁移相关的文件。
  • admin.py:包含管理后台的配置。
  • models.py:包含应用程序的模型定义。
  • views.py:包含视图函数的定义。
  • urls.py:用于定义应用程序的URL模式。
  • templates/:包含HTML模板文件。
  • 其他文件:__init__.pyapps.pytests.py等。

这只是一个基本的Django项目结构示例,可以根据需要进行扩展和修改。

创建工程(4.2.6)

实例一:Hello world

1. 确保您已经安装了Django。如果尚未安装,请在命令行中运行以下命令:

pip install django

2. 创建一个新的Django项目。在命令行中导航到您想要创建项目的目录,并运行以下命令:

django-admin startproject myproject

3. 进入项目目录:

cd myproject

4. 创建一个新的Django应用程序。在命令行中运行以下命令:

python manage.py startapp myapp

5. 在myproject/myproject/settings.py文件中,找到ALLOWED_HOSTS并将其更改为以下内容:

ALLOWED_HOSTS = ['*']

* 表示允许任何主机访问您的Django应用程序,在生产环境中,您应该将ALLOWED_HOSTS设置为您信任的主机名或IP地址,以限制访问您的应用程序的来源 

6. 在myproject/myproject/urls.py文件中,添加以下代码:

from django.urls import path, include

urlpatterns = [
    path('', include('myapp.urls')),
]

7. 在myproject/myapp目录中,创建一个新的urls.py文件,并添加以下代码:

from django.urls import path
from . import views

urlpatterns = [
    path('', views.index, name='index'),
]

8. 在myproject/myapp目录中,创建一个新的views.py文件,并添加以下代码:

from django.http import HttpResponse

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

9. 返回到项目根目录,运行以下命令启动服务器:

python manage.py runserver 0.0.0.0:10808

10. 打开浏览器,并访问 http://localhost:10808/ ,您将看到 "Hello, world!" 的消息。

实例二:访问一个自定义主页

1. 确保在settings.py文件中,TEMPLATES设置中添加了应用程序的模板目录:

import os.path

TEMPLATES = [
    {
        ...
        'APP_DIRS': True,
        'DIRS': [os.path.join(BASE_DIR, 'myapp', 'templates')],
        ...
    },
]

这将告诉Django在`myapp`应用程序的`templates`目录中查找模板文件。

2. 在urls.py文件中正确配置了URL模式。如果您的应用程序位于项目的根目录下,可以将以下代码添加到urls.py文件中:

from django.urls import path
from myapp.views import index

urlpatterns = [
    path('', index, name='index'),   # ''标示没有地址访问默认目录index
    # 其他URL模式
]

''标示没有地址访问默认目录index 

确保`myapp.views`导入了正确的视图函数,并将根URL与`index`视图函数关联起来。

3. 确保在项目的settings.py文件中的INSTALLED_APPS设置中添加了应用程序

INSTALLED_APPS = [
    ...
    'myapp',
    ...
]

这将告诉Django加载`myapp`应用程序。

4. 进入myapp目录下创建文件夹templates

5. 编写index.html代码

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>这里是主页</title>
   <style>
       h1 { color:red }
   </style>
</head>
<body>
   <h1>这里是主页</h1>
</body>
</html>

6.  打开浏览器,并访问 http://localhost:10808/ 

实例三:通过登录跳转到主页

1. 创建一个名为login.html的模板文件

<html>
<head>
    <title>Login</title>
</head>
<body>
    <h1>Login</h1>
    {% if error_message %}
        <p>{{ error_message }}</p>
    {% endif %}
    <form method="post" action="{% url 'login' %}">
        {% csrf_token %}
        <label for="username">用户:</label>
        <input type="text" id="username" name="username"><br><br>
        <label for="password">密码:</label>
        <input type="password" id="password" name="password"><br><br>
        <input type="submit" value="登录">
    </form>
</body>
</html>

2. 在views.py文件中,您需要定义一个处理登录页面请求的视图函数

#! /usr/bin/env python
# -*- coding: utf-8 -*-

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

# Create your views here.
def login(request):
    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')
        if username == 'admin' and password == '123456':
            # 登录成功,重定向至主页
            return redirect('index')
        else:
            # 登录失败,返回错误消息
            error_message = '用户名或密码错误'
            return render(request, 'login.html', {'error_message': error_message})
    else:
        return render(request, 'login.html')

def index(request):
    #return HttpResponse("Hello, world!")
    return render(request,'index.html')

3. 在urls.py文件中,需要将URL模式与登录视图函数关联起来,并指定默认访问地址为登录页。在urls.py文件中添加以下代码

from django.urls import path
from . import views

urlpatterns = [
    path('', views.login, name='login'),
    path('index/', views.index, name='index'),
]

4. 创建一个名为index.html的模板文件

<html>
<head>
    <title>主页</title>
</head>
<body>
    <h1>欢迎来到主页!</h1>
    <p>这是主页的内容.</p>
</body>
</html>

5.  打开浏览器,并访问 http://localhost:10808/ 

实例四:主页添加静态文件,包含js、css、图片

1. 在settings.py文件中,配置静态文件 STATIC_URLSTATICFILES_DIRS

STATIC_URL = 'static/'

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'myapp', 'static'),                                                                                                                                           
]

2. myapp目录下创建static文件夹,static文件夹下分别创建js目录、css目录、images目录

3. 创建css文件styles.css

body {
  background-color: #f1f1f1;
  font-family: Arial, sans-serif;
}

h1 {
  color: blue;
}

p {
  font-size: 16px;
}

在这个示例中,CSS代码设置了一些基本的样式,如页面背景颜色、标题颜色和段落字体大小

主页引用

<link rel="stylesheet" type="text/css" href="{% static 'css/styles.css' %}">

4. 创建js文件script.js

console.log("你好, JavaScript!");

F12可查看控制台console日志

5. 创建图片logo.png

6. 主页完整代码

<!DOCTYPE html>
<html>
<head>
    <title>我的主页</title>
    <!--{% load static %}-->
    <link rel="stylesheet" type="text/css" href="{% static 'css/styles.css' %}">
</head>
<body>
    <h1>欢迎来到我的主页</h1>
    <img src="{% static 'images/logo.png' %}" alt="Logo">
    
    <p>这是主页内容.</p>
    
    <script src="{% static 'js/script.js' %}"></script>
</body>
</html>

7. 确保在使用static标签之前,始终在模板文件的顶部添加{% load static %}标签,以确保Django正确加载和解析静态文件模板标签.

8.  打开浏览器,并访问 http://localhost:10808/ 

实例五:访问api多级路径,传入json参数计算结果

1. 添加urls.py代码

path('api/add', views.add_numbers, name='add_numbers'),

2. 添加views.py代码

import json
from django.views.decorators.csrf import csrf_exempt
from django.http import JsonResponse

@csrf_exempt
def add_numbers(request):
    if request.method == 'POST':
        try:
            data = json.loads(request.body)
            print(111, data)
            num1 = int(data.get('number1'))
            num2 = int(data.get('number2'))
            result = num1 + num2
            response_data = {'result': result}
            return JsonResponse(response_data)
        except (ValueError, TypeError):
            response_data = {'错误': '输入错误'}
            return JsonResponse(response_data, status=400)
    else:
        response_data = {'错误': '方法错误'}
        return JsonResponse(response_data, status=405)

禁用CSRF保护:这不是在生产环境中推荐的做法。在开发阶段,您可以在视图函数上使用@csrf_exempt装饰器来禁用CSRF保护。

3. 打开谷歌插件postwoman插件访问http://172.16.12.128:10808/api/add

 

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

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

相关文章

学习Python,为什么可以轻松应对工作大小事?

Python&#xff0c;大名鼎鼎&#xff0c;它在工作中到底能发挥什么样的作用&#xff1f;在现代职场&#xff0c;Python如同一把瑰丽的多功能钥匙&#xff0c;能打开各行各业的大门。无论你是行政助手、财务分析师、电商经营者&#xff0c;还是数据研究员&#xff0c;Python都能…

pychram中cmd已导入docx库仍报错ModuleNotFoundError: No module named ‘docx‘

已经在cmd里pip install python-docx了&#xff0c;但是执行py文件时依然报错&#xff0c;解决方式是在File-Setting-Python Interpreter中点击号&#xff0c;搜索python-docx点击install package等待安装成功再执行文件就不会报错了。

SkyWalking官方文档-1-概述

概述 SkyWalking是一个开源的可观测平台&#xff0c;用于收集&#xff0c;分析&#xff0c;聚合&#xff0c;以及可视化处理来自服务和云原生框架的数据。SkyWalking提供了一种简单的方法来维护分布式系统的清晰视图&#xff0c;即使是跨云。 它是一种现代APM&#xff0c;专门…

手机app爬虫配置(模拟机)

近期在做某个项目,涉及到需要对手机app的进行数据爬取。 下面将讲述具体配置步骤 1、安装手机模拟器 在百度上搜索手机模拟器就可以啦,这里以夜神模拟器夜神安卓模拟器-安卓模拟器电脑版下载_安卓手游模拟器_手机模拟器_官网为例子。 下载后,直接点击安装即可。 2、安装…

多模态对比语言图像预训练CLIP:打破语言与视觉的界限

项目设计集合&#xff08;人工智能方向&#xff09;&#xff1a;助力新人快速实战掌握技能、自主完成项目设计升级&#xff0c;提升自身的硬实力&#xff08;不仅限NLP、知识图谱、计算机视觉等领域&#xff09;&#xff1a;汇总有意义的项目设计集合&#xff0c;助力新人快速实…

美国人工智能政策公布

美国总统拜登 30 号上午发布了一项关于人工智能&#xff08;AI&#xff09;的行政命令&#xff08;EO&#xff09;。该行政命令最初以白宫情况说明书的形式向公众提供&#xff0c;“为人工智能安全和安保制定了新标准&#xff0c;保护美国人的隐私&#xff0c;促进公平和公民权…

【C++指针】类的指针

/*** file * author jUicE_g2R(qq:3406291309) * brief 类的指针* copyright 2023.10* COPYRIGHT 原创学习笔记&#xff1a;转载需获得博主本人同意&#xff0c;且需标明转载源* language C*/1 类 类 类 需要在 . h 文件 .h文件 .h文件 先声明 //…

MyBatis批量插入数据优化,新增参数大幅提升操作效率

项目中进行接口压测&#xff0c;发现批量插入的速度有点超出预期&#xff0c;感觉很奇怪&#xff0c;经过定位后发现mybatise-plus批量保存的处理十分缓慢&#xff0c;使用的是saveBatch方法&#xff0c;这点有点想不通。于是就进行了相关内容分析。 根据mybatise-plus中saveB…

ecplise中导入或更新项目之后出现的jsp文件一直显示红叉

解决办法&#xff1a;右键---build path或者properties中找java build path 先检查项目本身的jre版本是不是不与你本身的加热版本相同&#xff0c;如果不相同&#xff0c;则选中这个jre Systemlibrary -----右边有一个remove删除点。。。 &#xff08;2&#xff09;重新添加一…

(自适应手机端)厨师招聘信息发布类网站模板

(自适应手机端)厨师招聘信息发布类网站模板 PbootCMS内核开发的网站模板&#xff0c;该模板适用于信息发布网站等企业&#xff0c;当然其他行业也可以做&#xff0c;只需要把文字图片换成其他行业的即可&#xff1b; 自适应手机端&#xff0c;同一个后台&#xff0c;数据即时同…

chatgpt中文翻译英文

chatgpt中文翻译英文 chatgpt很适合用于将翻译英文&#xff0c;在英文论文写作上&#xff0c;日常翻译任务都有很大帮助。 使用方法 给出下面这段话&#xff1a; 下面我让你来充当翻译家&#xff0c;你的目标是把中文翻译成英文&#xff0c;请翻译时不要带翻译腔&#xff0c…

灯串上亚马逊加拿大合规标准CSA认证如何办理?

灯串 灯串和配件都是插头连接的便携式、临时性商品&#xff0c;最大额定输入电压为 120 伏。 本政策适用于季节性照明、装饰性灯具以及灯串。 亚马逊灯串政策 根据亚马逊的要求&#xff0c;所有季节性和装饰性灯串均应经过检测&#xff0c;并且遵守下列法规、标准和要求&…

【数电知识点_2023.10.28】

数制与码制 十进制转二进制 8 bits 1 Byte 2|12 //121100自下而上 商为0为止 2|_ 6_…0 2|_ 3_…0 2|1…1 0…1 0.375 //0.3750.011自上而下 小数点为0为止 x 2 ———— 0.75…0 x 2 ———— 1.5…1 x 2 ———— 1…1 BCD码&#xff1a;每4位二进制表示一位十进制 8421…

装修怎么快速除甲醛 房间装修除装修异味方法

装修怎么快速除甲醛 房间装修除装修异味方法 甲醛问题在装修中引起关注&#xff0c;装修房子是每个家庭都会经历的事情&#xff0c;而甲醛污染也是其中的一个难题。甲醛是一种有害物质&#xff0c;对人体健康造成严重影响&#xff0c;尤其对婴幼儿更为敏感。在装修过程中&#…

从零开始学习PX4源码0(固件下载及编译)

目录 文章目录 目录摘要1.重点学习网址2.固件下载1.下载最新版本固件2.下载之前版本固件 摘要 本节主要记录从零开始学习PX4源码1(固件下载)的过程&#xff0c;欢迎批评指正&#xff01;&#xff01;&#xff01; 下载固件主要分为两个版本&#xff0c;之前稳定版本和最新官网…

【C++项目】高并发内存池项目第八讲 项目总结和面试问题分享

项目总结面试分享 1.项目总结1.1优点1.2不足1.3面试常见问题 2.面试分享项目部分C语法部分 项目源代码&#xff1a;高并发内存池 1.项目总结 1.1优点 增加动态申请的效率减少陷入内核的次数减少系统内存碎片提升内存使用率尽量减少锁竞争应用于多核多线程场景 1.2不足 当前…

西南建筑电气年会暨大运场馆电气设计技术论坛-安科瑞 蒋静

2023年10月19-20日&#xff0c;由中国建筑西南设计研究院有限公司、西南建筑电气工程设计情报网、四川省土木建筑学会建筑电气专业委员会、四川省电工技术学会工业与建筑供电专业委员会、建筑电气杂志社联合主办的第九届(2023年)“西南建筑电气年会暨大运场馆电气设计技术论坛”…

C/C++ “variable set but not used“的 警告问题解决方案

在编程的过程中&#xff0c;会有一些预留的变量暂时不用&#xff0c;但是编译过程编译器警告 会报错无法编译通过针对这个问题&#xff0c;采用下面的解决方案比较方便。 错误如下形式&#xff1a; 三种解决方法&#xff1a; 1.可以在变量前加上&#xff08;void&#xff09;就…

怎么监控钉钉聊天记录内容(监控钉钉聊天记录的3种形式)

企业沟通工具的普及&#xff0c;越来越多的企业开始使用钉钉作为内部沟通工具。然而&#xff0c;对于企业管理者来说&#xff0c;如何监控钉钉聊天记录内容成为了一个重要的问题。本文将介绍几种方法&#xff0c;帮助企业管理者实现监控钉钉聊天记录内容的目的。 一、钉钉自带功…

《研发效能(DevOps)工程师》课程简介(二)丨IDCF

为贯彻落实《关于深化人才发展体制机制改革的意见》&#xff0c;推动实施人才强国战略&#xff0c;促进专业技术人员提升职业素养、补充新知识新技能&#xff0c;实现人力资源深度开发&#xff0c;推动经济社会全面发展&#xff0c;根据《中华人民共和国劳动法》有关规定&#…