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

目录

概述

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.pymyproject/__init__.pysettings.pyurls.pywsgi.pymyapp/migrations/__init__.py__init__.pyadmin.pyapps.pymodels.pytests.pyviews.pyurls.pytemplates/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, includeurlpatterns = [path('', include('myapp.urls')),
]

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

from django.urls import path
from . import viewsurlpatterns = [path('', views.index, name='index'),
]

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

from django.http import HttpResponsedef 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.pathTEMPLATES = [{...'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 indexurlpatterns = [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 viewsurlpatterns = [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 + num2response_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.mzph.cn/news/127949.shtml

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

相关文章

Android开发笔记(三)—Activity篇

活动组件Activity 启动和结束生命周期启动模式信息传递Intent显式Intent隐式Intent 向下一个Activity发送数据向上一个Activity返回数据 附加信息利用资源文件配置字符串利用元数据传递配置信息给应用页面注册快捷方式 启动和结束 &#xff08;1&#xff09;从当前页面跳到新页…

0032Java程序设计-基于JavaEE的智能化酒店点餐收款系统的设计与实现论文

文章目录 摘 要目录系统设计开发环境 摘 要 酒店点餐收款系统是为了实现酒店餐饮自动化管理而设计的&#xff0c;它完全取代了原来酒店餐饮管理一直使用的人工处理的工作方式&#xff0c;并且避免了由于管理人员的工作疏忽以及管理质量问题所造成的各种错误&#xff0c;为及时…

cudnn too short

原因是libcudnn.so为软链接&#xff0c;相当于快捷键&#xff0c;但是没有映射到真正的libcudnn.so.8.9.5上 cd /usr/local/cuda-11.6/lib64 ln -s libcudnn.so.8.9.5 libcudnn.so.8 ln -s libcudnn.so.8.9.5 libcudnn.so

亚马逊云科技为奇点云打造全面、安全、可扩展的数据分析解决方案

刘莹奇点云联合创始人、COO&#xff1a;伴随云计算的发展&#xff0c;数据技术也在快速迭代&#xff0c;成为客户迈入DT时代、实现高质量发展的关键引擎。我们很高兴能和云计算领域的领跑者亚马逊云科技一同&#xff0c;不断为客户提供安全可靠的产品与专业的服务。 超过1500家…

Object转List<>,转List<Map<>>

这样就不会局限在转换到List<Map<String,Object>>这一种类型上了.可以转换成List<Map<String,V>>上等,进行泛型转换虽然多了一个参数,但是可以重载啊注: 感觉field.get(key) 这里处理的不是很好,如果有更好的办法可以留言 public static <K, V> …

0基础学习PyFlink——个数滚动窗口(Tumbling Count Windows)

大纲 Tumbling Count WindowsmapreduceWindow Size为2Window Size为3Window Size为4Window Size为5Window Size为6 完整代码参考资料 之前的案例中&#xff0c;我们的Source都是确定内容的数据。而Flink是可以处理流式&#xff08;Streaming&#xff09;数据的&#xff0c;就是…

【C++】set和multiset

文章目录 关联式容器键值对一、set介绍二、set的使用multiset 关联式容器 STL中的部分容器&#xff0c;比如&#xff1a;vector、list、deque、forward_list(C11)等&#xff0c;这些容器统称为序列式容器&#xff0c;因为其底层为线性序列的数据结构&#xff0c;里面存储的是元…

【JAVA学习笔记】58 - 泛型

项目代码 https://github.com/yinhai1114/Java_Learning_Code/tree/main/IDEA_Chapter15/src/com/yinhai/generic_ https://github.com/yinhai1114/Java_Learning_Code/tree/main/IDEA_Chapter15/src/com/yinhai/customgeneric_ 一、泛型的入门和好处 1)请编写程序&#xff0c;…

人工智能基础_机器学习016_BGD批量梯度下降求解多元一次方程_使用SGD随机梯度下降计算一元一次方程---人工智能工作笔记0056

然后上面我们用BGD计算了一元一次方程,那么现在我们使用BGD来进行计算多元一次方程 对多元一次方程进行批量梯度下降. import numpy as np X = np.random.rand(100,8) 首先因为是8元一次方程,我们要生成100行8列的X的数据对应x1到x8 w = np.random.randint(1,10,size = (8…

B端企业形象设计的正确姿势,你学会了吗?

如今&#xff0c;企业形象设计在B端市场中变得越来越重要。它是企业与客户之间建立联系的桥梁&#xff0c;也是吸引目标客户的重要方式。为了帮助您打造一个独特而专业的企业形象设计&#xff0c;我将为您提供十个步骤。 步骤1&#xff1a;了解企业定位和目标 在设计B端企业形…

完美解决:Nginx安装后,/etc/nginx/conf.d下面没有default.conf文件

目录 1 问题&#xff1a; 2 解决方法 方法一&#xff1a; 方法二&#xff1a; 3 查看 1 问题&#xff1a; /etc/nginx/conf.d下面没有default.conf文件。 2 解决方法 方法一&#xff1a; 自己创建default.conf文件。 vi /etc/nginx/conf.d/default.conf 添加如下内容&…

恒驰服务 | 华为云数据使能专家服务offering之大数据建设

恒驰大数据服务主要针对客户在进行智能数据迁移的过程中&#xff0c;存在业务停机、数据丢失、迁移周期紧张、运维成本高等问题&#xff0c;通过为客户提供迁移调研、方案设计、迁移实施、迁移验收等服务内容&#xff0c;支撑客户实现快速稳定上云&#xff0c;有效降低时间成本…

js字符串支持多个分隔符分割

js字符串支持多个分隔符分割 场景代码 场景 用户输入内容后&#xff0c;支持多个分隔符&#xff08;比如&#xff1a;中英文逗号&#xff0c;分号以及换号&#xff09;对字符串进行分割&#xff0c;之后提交给后台同学解析。 代码 function splitString(inputString, separat…

「专题速递」数据驱动赋能、赛事直播优化、RTC技术、低延时传输引擎、多媒体处理框架、GPU加速...

点击文末阅读原文&#xff0c; 免费报名【抖音背后的体验增长实战揭秘】专场 随着全行业视频化的演进&#xff0c;营销、知识、商业和空间的交互体验正在被重塑。这种变化不仅仅是一种抽象的趋势&#xff0c;更是关系到用户留存和业务增长的关键因素。面对这样的挑战&#xff0…

【音视频 | wav】wav音频文件格式详解——包含RIFF规范、完整的各个块解析、PCM转wav代码

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

Websocket传输协议是什么

WebSocket 是一种网络通信协议&#xff0c;属于 HTML5 规范的一部分。它提供了在单个长期连接上进行全双工通信的能力&#xff0c;使得数据可以从客户端发送到服务器&#xff0c;也可以从服务器发送到客户端&#xff0c;这与传统的 HTTP 请求和响应模型不同。 WebSocket 协议定…

Latex安装使用教程

在论文投稿时有些期刊要求使用Latex格式&#xff0c;比如博主现在就遇到了这个问题&#xff0c;木有办法&#xff0c;老老实实的学呗。大家可以去官网下载&#xff0c;但官网的界面设计属实有些一言难尽&#xff0c;因此我们可以使用国内的镜像。 LaTeX 基于 TeX&#xff0c;主…

输入几个数,分别输出其中的奇数和偶数

这个问题我们只需要设计几个循环嵌套在一起就可以解决&#xff0c;话不多说&#xff0c;我们直接上代码 目录 1.运行代码 2.运行结果 1.运行代码 #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<string.h>int main() {int arr[10] {1,2,3,4,5,6,…

测试用例设计方法 —— 场景法详解

场景法是通过运用场景来对系统的功能点或业务流程的描述&#xff0c;从而提高测试效果的一种方法。 场景法一般包含基本流和备用流&#xff0c;从一个流程开始&#xff0c;通过描述经过的路径来确定的过程&#xff0c;经过遍历所有的基本流和备用流来完成整个场景。 场景主要…

AQS面试题总结

一&#xff1a;线程等待唤醒的实现方法 方式一&#xff1a;使用Object中的wait()方法让线程等待&#xff0c;使用Object中的notify()方法唤醒线程 必须都在synchronized同步代码块内使用&#xff0c;调用wait&#xff0c;notify是锁定的对象&#xff1b; notify必须在wait后执…