二挡起步——pythonweb开发Django框架,前端原生+Django后端框架002(附带小案例)

news2024/11/16 17:33:13

 大家好,我是csdn的博主:lqj_本人

这是我的个人博客主页:

lqj_本人的博客_CSDN博客-微信小程序,前端,python领域博主lqj_本人擅长微信小程序,前端,python,等方面的知识https://blog.csdn.net/lbcyllqj?spm=1011.2415.3001.5343哔哩哔哩欢迎关注:小淼Develop

小淼Develop的个人空间-小淼Develop个人主页-哔哩哔哩视频

本篇文章主要讲述:快速上手,pythonweb开发Django框架

目录

Django框架

工作机制

获取请求方式

GET/POST方式

URL路由传值

【响应】HttpResponse

【响应】读取HTML的内容 + 渲染(替换) -> 字符串,返回给用户浏览器。

重定向路由

 文末小案例(用户登录简单案例)

login.html:

url_lqj.html(默认生成模板)

urls.py文件注册路由:

views.py文件函数代码:


Django框架

Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,即模型M,视图V和模版T。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。并于2005年7月在BSD许可证下发布。这套框架是以比利时的吉普赛手Django Reinhardt来命名的。Django是高水准的Python编程语言驱动的一个开源模型.视图,控制器风格的Web应用程序框架,它起源于开源社区。使用这种架构,程序员可以方便、快捷地创建高品质、易维护、数据库驱动的应用程序。这也正是OpenStack的Horizon组件采用这种架构进行设计的主要原因。另外,在Dj ango框架中,还包含许多功能强大的第三方插件,使得Django具有较强的可扩展性 [2] 。Django 项目源自一个在线新闻 Web 站点,于 2005 年以开源的形式被释放出来。

工作机制

 

获取请求方式

GET/POST方式

这里我就以GET请求方式为例:

在templates文件夹里创建一个url_lqj.html文件。

并在urls.py注册页面路由:

path('login/', views.login)

views.py文件中的函数:

def url_lqj(request):
    print(request.method)

URL路由传值

基于上面的演示,在views.py文件中的函数,修改为:

def url_lqj(request):
    print(request.GET)
    return render(request,'url_lqj.html')

【响应】HttpResponse

说明:(“返回内容”),内容字符串返回给请求者。

基于上面的演示,在views.py文件中的函数,修改为:

def url_lqj(request):
    return HttpResponse("返回内容")

 

【响应】读取HTML的内容 + 渲染(替换) -> 字符串,返回给用户浏览器。

基于上面的演示,在views.py文件中的函数,修改为:

def url_lqj(request):
    return render(request,'url_lqj.html',{"title":"来了"})

基于上面的演示,在url_lqj.html文件中的函数,修改为:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>url_lqj</title>
</head>
<body>
    <h1>某些请求{{ title }}</h1>

</body>
</html>

重定向路由

让浏览器重定向到其他的页面

基于上面的演示,在views.py文件中的函数,修改为:

def url_lqj(request):
    return redirect("https://blog.csdn.net/lbcyllqj?spm=1000.2115.3001.5343")

效果:当我们在浏览器输入我们写的路由,Django会利用该重定向给我们跳转到上当的地址(这里的地址是我的CSDN主页地址)

 文末小案例(用户登录简单案例)

login.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div style="margin-top: 100px;display: flex;flex-direction: row;justify-content: space-around">
        <h1 style="color: orange">CSDN用户登录</h1>
    </div>

    <div style="margin-top: 100px;display: flex;flex-direction: row;justify-content: space-around">
        <form method="post" action="/login/">
            {% csrf_token %}
            <input placeholder="请输入用户名" name="admin" type="text" >
            <input placeholder="请输入密码" name="pwd" type="text" >
            <input type="submit" value="登录" />
        </form>
    </div>

    <div style="display: flex;flex-direction: row;justify-content: space-around;margin-top: 100px">
        <div>{{ tishi_1 }}</div>
    </div>
</body>
</html>

url_lqj.html(默认生成模板)

urls.py文件注册路由:

from django.urls import path
from app01 import views

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

    # path('index/', views.index),
    #联通新闻中心
    # path('news/', views.news),
    path('url_lqj/', views.url_lqj),
    path('login/', views.login)
]

views.py文件函数代码:

说明:

def login(request):
    if request.method == "GET":
        return render(request, "login.html")
    else:
        print(request.POST)
        username = request.POST.get("admin")
        userpwd = request.POST.get("pwd")
    if username == 'lqj' and userpwd == '123':
        return redirect("https://blog.csdn.net/lbcyllqj?spm=1000.2115.3001.5343")
    else:
        tishi ="账号或密码错误"
        return render(request, "login.html",{"tishi_1":tishi})

上面代码:

1.使用request.method返回用户访问时的请求方式,判断并进入相应前端路由

2.如果判断对,进入login.html页面

3.否则,获取用户post的数据(表单中提交的数据)

4.判断用户输入的账号和密码是否与设置的一致

5.一致,则重定向页面为:

https://blog.csdn.net/lbcyllqj?spm=1000.2115.3001.5343

6.不一致,携带tihsi中的字符串,返回给login.html文件

from django.shortcuts import render, HttpResponse, redirect
def url_lqj(request):
    # request是一个对象,封装了用户发送过来的所有请求的数据

    # 获取请求方式 GET/POST
    # print(request.method)
    # 在URL上传递的值,比如:url_lqj/lqj=123&qqq=123
    # print(request.GET)
    # 4.【响应】HttpResponse(“返回内容”),内容字符串返回给请求者。
    # return HttpResponse("返回内容")
    # 5.【响应】读取HTML的内容 + 渲染(替换) -> 字符串,返回给用户浏览器。
    # return render(request,'url_lqj.html',{"title":"来了"})
    # 6.让浏览器重定向到其他的页面
    return redirect("https://blog.csdn.net/lbcyllqj?spm=1000.2115.3001.5343")


def login(request):
    if request.method == "GET":
        return render(request, "login.html")
    else:
        print(request.POST)
        username = request.POST.get("admin")
        userpwd = request.POST.get("pwd")
    if username == 'lqj' and userpwd == '123':
        return redirect("https://blog.csdn.net/lbcyllqj?spm=1000.2115.3001.5343")
    else:
        tishi ="账号或密码错误"
        return render(request, "login.html",{"tishi_1":tishi})

案例效果:

用户名或密码错误时:

 用户名或密码正确时:

 随后重定向成功:

 

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

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

相关文章

ERROR: Could not find a valid gem ‘cocoapods‘ (>= 0) in any repository

Flutter启动的时候报错 需要重新安装cocoapods&#xff0c;那就重装&#xff0c;可是结果装不上 这是需要梯子的&#xff0c;我开了梯子也是一样安装不上 所以需要指定一下你的http代理ip和端口 你可以找一下你梯子的端口&#xff0c;找找代理命令&#xff0c;比如我的如下…

人工智能概述、发展历程及主要分支

人工智能概述 人工智能发展必备三要素&#xff1a; 数据 算法 计算力 &#xff0c;硬件支撑 CPU、GPU、TPU 计算力之CPU、GPU对比&#xff1a; CPU主要适合I\O密集型的任务 GPU主要适合计算密集型任务 什么类型的程序适合在GPU上运行&#xff1f; &#xff08;1&#…

数据库的逻辑组织

目录 一、数据库构架 二、系统数据库 1&#xff0e;master数据库 2. tempdb数据库 3. model数据库 4. msdb数据库 三、用户数据库 用户数据库在sysdatabases表中的记录 一、数据库构架 数据库存储是按物理方式在磁盘上作为两个或更多的文件实现。用户使用数据库时使…

java学习之异常三

目录 一、throws 一、基本说明 二、使用细节 二、自定义异常 一、 基本概念 ​编辑二、自定义异常的步骤 三、实例 四、练习 三、throw和throws的区别 四、本章作业 第一道 第二题 第三题 第四题 一、throws 一、基本说明 package com.hspedu.throws_;import java.i…

Linux常用命令(2)

文章目录 Linux常用命令&#xff08;2&#xff09;拷贝 cp语法拷贝hello.txt生成一个新文件hello1.txt拷贝hello.txt文件到hello目录里面去拷贝hello目录生成一个新目录hello1拷贝hello1目录到主目录里面去并且命名为hello2目录 更名/移动 mv删除 rm管理员命令echo / cat将信息…

JVM 程序计数器(PC 寄存器)

PC Register 介绍 JVM中的程序计数寄存器( Program Counter Register) 中&#xff0c;Register 的命名源于 CPU 的寄存器, 寄存器存储指令相关的现场信息。 CPU 只有把数据装载到寄存器才能够运行JVM 中的 PC 寄存器是对物理 PC 寄存器的一种抽象模拟PC 寄存器用来存储指向下一…

Vue 子组件触发父组件事件,传递多个参数以及异常情况处理

Start 今天这篇文章记录一下子组件调用父组件事件&#xff0c;传参的逻辑。以及一些特殊的情况。 1. 示例 1.1 父组件 <template><div>我是父组件<hr /><child to-say"toSay" /></div> </template><script> import ch…

toFixed()*100保留的小数位数和预想的不一致

目录 一、问题 二、原因及解决方法 三、总结 一、问题 1.因为演示需要&#xff0c;要造一些假数据&#xff0c;一些数据要求保留2位小数。这需求真的不难&#xff0c;不就是parseFloat().toFixed()不就完了。 2.所以很快就写了如下代码&#xff1a; let aMath.random()*(1…

ChatGPT国内镜像网站大盘点(国内可用免费ChatGPT镜像站点)

目录 ChatGPT国内镜像网站 很多网友想要国内可用免费ChatGPT镜像站点&#xff0c;ChatGPT可以说是最近大火的AI工具&#xff0c;但是国内的小伙伴是无法使用ChatGPT的&#xff0c;要想在国内直接使用ChatGPT的话不仅需要通过技术手段让网络满足要求&#xff0c;还需要国外的手…

搭建ESP-12E外围电路

搭建ESP-12E外围电路 原理图&#xff1a; PCB&#xff1a; 参考的原理图: 扩展知识&#xff1a; USB转串口部分电路设计&#xff08;CH340N&#xff09;&#xff1a; CH340N引脚封装 参考文章 CH340C的ESP8266一键下载电路设计_ch340c esp8266_坚持努力&#xff0c;冲~的博客…

Binlog日志详解

binlog基本概念 binlog是一个二进制格式的文件&#xff0c;用于记录用户对数据库更新的SQL语句信息&#xff0c;例如&#xff1a;更改数据库表和更改内容的SQL语句都会记录到binlog里&#xff0c;但是不会记录SELECT和SHOW这类操作 binlog的特点 binlog在MySQL的Server层实现…

电路基础(第一章电路模型和电路定律)

第一章 电路模型和电路定律 简介&#xff1a; 电路基础第一篇知识笔记&#xff0c;在书上抄&#xff0c;在网上找&#xff0c;总之把基础的东西搞懂。近期要恶补一下基础了&#xff0c;谁想工作的时候天天被骂啊&#xff0c;弄啥啥不会。开卷。 学习教程参考教材《电路》——邱…

【NLP开发】Python实现聊天机器人(ChatterBot,集成前端页面)

&#x1f37a;NLP开发系列相关文章编写如下&#x1f37a;&#xff1a; &#x1f388;【NLP开发】Python实现词云图&#x1f388;&#x1f388;【NLP开发】Python实现图片文字识别&#x1f388;&#x1f388;【NLP开发】Python实现中文、英文分词&#x1f388;&#x1f388;【N…

关于说服(一)

首先有一个原则&#xff1a;没有人喜欢被改变 不好的话术反而会引起别人的抵触心理 为避免触发反抗机制&#xff0c;可以稍微改变一下话术&#xff1a;将 “你应该” 改为 “我需要”** 没人喜欢说教者 说教者常用句式 1 你为什么不肯去试一试 ->(隐喻) 你在逼别人复习反…

复刻ChatGPT语言模型系列-(一)基座模型选取

前言 今天开始我将会推出一系列关于复刻ChatGPT语言模型的博文。本系列将包括以下内容&#xff1a; 复刻ChatGPT语言模型系列-&#xff08;一&#xff09;基座模型选取复刻ChatGPT语言模型系列-&#xff08;二&#xff09;参数高效微调复刻ChatGPT语言模型系列-&#xff08;三…

玩机搞机--定制系统 编译系统选项 隐藏设置 关闭app联网 增加设置选项

在接待一些定制rom的过程中。对于有些客户的有些要求作出对应的系统编译操作选项。例如 1-----默认开启usb 2-----默认开启usb安全设置&#xff0c;使其开机就可以投屏操控 3------默认开启关机充电自动重启 4-----对于客户特定的app&#xff0c;使其不能联网操作 5-----对…

【Java入门合集】第四章继承(一)

【Java入门合集】第四章继承&#xff08;一&#xff09; 博主&#xff1a;命运之光专栏&#xff1a;JAVA入门 学习目标 1.掌握继承性的主要作用、实现、使用限制&#xff1b; 2.掌握this和super的含义及其用法&#xff1b; 3.掌握方法覆写的操作&#xff1b; 4.掌握final关键字…

Linux——进程信号

进程信号 信号的基础生活中技术上 信号的产生信号捕捉接口信号发送接口向任意进程发送信号向自己发送信号 进程退出时——核心转储 信号的保存信号其它相关概念信号如何实现捕捉的 信号的处理sigset_t信号集操作函数sigprocmasksigpending对于信号保存更深入的理解sigaction 可…

JavaWeb ( 八 ) 过滤器与监听器

2.6.过滤器 Filter Filter过滤器能够对匹配的请求到达目标之前或返回响应之后增加一些处理代码 常用来做 全局转码 ,session有效性判断 2.6.1.过滤器声明 在 web.xml 中声明Filter的匹配过滤特征及对应的类路径 , 3.0版本后可以在类上使用 WebFilter 注解来声明 filter-cla…

JVM 类加载子系统

内存结构概述 粗略图: 详细图&#xff1a; 类加载器与类的加载过程 类加载子系统负责从文件系统或者网络中加载 Class 文件&#xff0c; class 文件在文件开头有特定的文件标识ClassLoader 只负责 class 文件的加载,至于它是否可以运行, 则由 Execution Engine 决定加载的类信…