Pycharm社区版搭建Django环境及Django简单项目、操控mysql数据库

Web应用开发(Django)

一、配置Django环境

1、先通过Pycharm社区版创建一个普通的项目

2、依次点击”file"-->"Settings"

3、点击"Project:项目名"-"Python Interpreter"-"+号"

4、在搜索框输入要安装的包,选择要下载的版本,然后点击"Install Package"

5、配置成功

二、创建项目

1、打开终端Terminal(在最下边),然后输入下面的命令创建Django项目

    django-admin startproject   pydjango

然后在当前项目下,就会出现一个名为pyDjango项目名的文件夹。

2、在Django项目文件夹处,打开终端

3、输入以下命令

python manage.py runserver

点击该网址即可打开

三、创建应用

一般一个项目包含多个app应用程序(当然,通用的app也可以在多个项目中使用) 下面我们为该项目,创建一个名为login的应用。

1、创建应用

通过pyCharm中的终端,进入到pyDjango目录下,创建新的应用:

python manage.py startapp login

创建应用结构以及应用文件夹中的文件功能:

2、注册应用

在pyDjango项目的settings.py文件中,找到INSTALLED_APPS设置,将你新创建的应用添加到这个列表中:

四、编写代码

1、后端数据输出到前端

1.1、普通模式

具体操作步骤:

1、在login应用的views.py文件中,编写hello函数。

2、在项目中的url.py文件中,通过path()函数来配置url路径绑定响应函数

3、运行服务器,访问地址,可能会报出以下问题

4、修改访问URL地址,在后面加上要访问的路径:/hello。成功输出view.py文件中hello函数return的内容。

1.2、模板模式

(1)创建模板。在该项目下,创建一个目录,命名为template。并在其内创建index.html。如图所示

index.html文件代码如下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>首页</title>
</head>
<body>这是template目录下的index页面
</body>
</html>

(2)配置settings.py文件

在settings.py的TEMPLATES中添加你的模板路径:

(3)配置urls.py文件

在urls.py中添加url路径,指向views里的处理函数:

完成以上操作步骤之后,项目应该可以正常跑起来,在浏览器中输入:http://127.0.0.1:9999/index/。【注意:该ip和port需要根据自己配置的真实内容访问】

模板(Templates)解读:

  1. 模板是Django中用于生成HTML内容的文件,通常存放在应用的templates目录下。

  2. Django使用模板语言(Template Language)来动态生成内容,包括变量、标签和过滤器。

  3. 在视图函数中使用render()函数加载模板并传递数据进行渲染,最终返回给用户的是渲染后的HTML页面。

  4. 模板语言中的变量使用{{ variable_name }},标签使用{% tag_name %},过滤器使用{{ value|filter_name }}的方式进行操作。

  5. 继承是模板中常用的技术,通过{% extends 'base.html' %}和{% block content %}来实现模板的继承和覆盖。

2、模板中变量输出方式

视图函数中必须将变量封装到字典中才允许传递到模板上。也可以通过locals() 返回当前函数作用域内全部局部变量形成的字典。

2.1、在view.py文件中,修改index函数体,代码内容参考:

另一种使用locals(),代码参考

def index(request):name = 'lisi'age=12addr='china-beijing'phone='12312341234'# stu={'name':name,'age':age,'addr':addr,'phone':phone}# return render(request, "index.html",stu)return render(request,'index.html',locals())
​

2.2、修改template目录中index.html内容为:

运行结果:

3、前端数据传递到后端

3.1、修改template目录下的index.html文件内容。如图

代码为(采用form中的get方法传递):

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>首页</title>
</head>
<body>这是template目录下的index页面<br><form action="" method="get">{% csrf_token %}请输入姓名:<input type="text" name="username"/><input type="submit" name="submit" value="查询"></form>---------------------------------<br>您输入的姓名为:{{ name }}<br>
​
</body>
</html>

3.2、修改view.py文件内容。如图

函数代码为:

def index(request):if request.method == "GET":name = request.GET.get('username')elif request.method == "POST":name = request.POST.get('username')return render(request, 'index.html', locals())

运行结果:

五、连接mysql数据库

1、安装mysqlclient

安装成功后,在项目环境的__init__.py文件中添加如下内容:

如果pymysql下面有红色波浪线,说明该模块未安装。在项目内安装即可。

2、配置数据库

修改settings.py文件中的DATABASES的值

3、绑定ORE关系映射

在sdp下的models.py中,创建类。以下方式的创建,需要满足的前提:在数据库中已经创建好了students表

ORM:对象关系映射

作用:目的就是为了能够让不懂SQL语句的人通过python面向对象的知识点也能够轻松自如的操作数据库

缺陷:封装程度太高,有时候sql语句的效率偏低,需要自己写SQL语句

类 ---------------->>> 表

对象 --------------->>> 表里面的数据

对象点属性 ---------->>> 字段对应的值

注意:

如果是在models.py创建类,而数据库中没有对应的表,则需要在terminal上面执行下面两条命令

登陆mysql查看结果。会自动生成对应的表

4、数据读取

在views.py文件中,定义函数来处理。

运行服务器,并访问对应URL,显示结果为:

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

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

相关文章

同三维T80005JEHVA 4K视频解码器

同三维T80005JEHVA视频解码器 可解1路4K30HDMI/VGA/CVBS1路3.5音频 可解电台音频网络流&#xff0c;可同时解4个网络流&#xff0c;分割输出 可预设十个流&#xff0c;任意切换1路流输出 <!--[endif]----><!--[if !vml]--> <!--![endif]----> 介绍&…

弹幕逆向signature、a_bogus

声明 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 本文章未经许可禁止转载&a…

每日5题Day18 - LeetCode 86 - 90

每一步向前都是向自己的梦想更近一步&#xff0c;坚持不懈&#xff0c;勇往直前&#xff01; 第一题&#xff1a;86. 分隔链表 - 力扣&#xff08;LeetCode&#xff09; /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;…

企业化运维(2)_nginx

###1.nginx源码安装部署### ###2.平滑升级### &#xff08;1&#xff09;版本升级 当服务器在运行时&#xff0c;需要升级的情况下&#xff0c;平滑升级即就是不断开服务器就可以进行升级&#xff0c;最大限度保证数据的完整性。 下载nginx新版本软件&#xff0c;正常执行./c…

Day51 代码随想录打卡|二叉树篇---二叉搜索树的最小绝对差

题目&#xff08;leecode T530&#xff09;&#xff1a; 给你一个二叉搜索树的根节点 root &#xff0c;返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数&#xff0c;其数值等于两值之差的绝对值。 方法&#xff1a;本题计算二叉搜索树的最小绝对差&#xff0c;涉…

WordPress插件数据库批量替换内容工具插件

1、安装插件后&#xff0c;我们就可以在后台菜单看到工具操作界面 2、目前支持网站内容、标题、评论指定字符的快速替换 3、可以快速解决以往我们需要从MYSQL数据库命令替换的烦恼

Linux编辑器 vim使用 (解决普通用户无法进行sudo提权问题)

文章目录 一.vim是什么命令模式底行模式 二.关于vim暂停问题三.注释批量化注释批量化去注释 四.解决普通用户无法进行sudo提权问题五.vim的配置 一.vim是什么 用过VS的都知道&#xff0c;拥有着编辑器编译器调试.编写C&#xff0c;C&#xff0c;python等的功能。就是集成 Linu…

I/O Stream设计实验

实验要求和目的 深入理解java输入输出流相关类的基本用法&#xff0c;并且可以掌握Java程序的编写和调试。 实验环境 Java语言&#xff0c;PC或android平台 实验具体内容 设计和编写以下程序&#xff1a; 程序1&#xff1a; 从键盘读入多行字符串&#xff08;英文&#xf…

STM32学习笔记(三)--EXTI外部中断详解

&#xff08;1&#xff09;配置步骤1.配置RCC 打开外设时钟2.配置GPIO 选择端口输入模式3.配置AFIO 选择要用的一路GPIO 连接至EXTI 4.配置EXTI 选择边沿触发方式 上升沿 下降沿 双边沿 选择触发响应方式 中断响应 事件响应 5.配置NVIC 选择一个合适的优先…

若依微服务Docker部署验证码出不来怎么办?

最近,有许多人反馈在使用 Docker 部署若依微服务项目时,遇到验证码无法显示的问题。本文将重点介绍解决该问题的注意事项以及整个项目的部署流程。之前我们也撰写过微服务部署教程,本文将在此基础上进行优化和补充。你也可以参考我之前写的部署教程:https://yang-roc.blog.…

宠物空气净化器避坑指南:希喂、霍尼韦尔、安德迈谁是性价比之王

作为一个拥有两只布偶的猫奴&#xff0c;家中猫浮毛无处不在&#xff0c;稍有松懈&#xff0c;出门衣物上便沾满猫毛&#xff0c;影响形象。不仅如此&#xff0c;空气中还飘浮着猫咪们的浮毛和异味。难以清理。经过我不懈的努力&#xff0c;我终于找到了解决这一问题的神器——…

自定义 LLM:LangChain与文心一言擦出火花

自定义 LLM 自定义 LLM 需要实现以下必要的函数&#xff1a; _call &#xff1a;它需要接受一个字符串、可选的停用词&#xff0c;并返回一个字符串。 它还可以实现第二个可选的函数&#xff1a; _identifying_params &#xff1a;用于帮助打印 LLM 信息。该函数应该返回一…

OpenStack入门体验及一键部署

OpenStack入门体验 技能目标&#xff1a; 了解云计算概念 了解OpenStack 了解OpenStack的构成 会OpenStack单机环境一键部署 从控制台认识OpenStack各项功能会 通过OpenStack控制台创建云主机 什么是云计算 云计算(cloudcomputing)是一种基于网络的超级计算模式&a…

Java老人护理上门服务类型系统小程序APP源码

&#x1f338; 老人上门护理服务系统&#xff1a;温暖与专业并存 &#x1f338; 一、&#x1f3e0; 走进老人上门护理服务系统 随着社会的快速发展&#xff0c;我们越来越关注老年人的生活质量。老人上门护理服务系统应运而生&#xff0c;它结合了现代科技与人性化服务&#…

redis序列化

文章目录 1、为什么要进行序列化操作&#xff1f;2、序列化方式2.1、自定义序列化2. 2、StringRedisTemplate&#xff08;重点&#xff09; 1、为什么要进行序列化操作&#xff1f; 不进行序列化向redis存入数据代码&#xff1a; SpringBootTest class RedisDemoApplicationT…

java反序列化---cc6链

目录 Transformer[]数组分析 链条代码跟进 ChainedTransformer.transform() LazyMap.get() TiedMapEntry.getValue() TiedMapEntry.hashCode() HashMap.hash() HashMap.put()的意外触发 LazyMap.get()中key的包含问题 cc6的payload如下 import org.apache.commons.co…

Vue40-vueComponent构造函数

一、组件的本质&#xff1a;VueComponent构造函数 组件的本质是&#xff1a;构造函数 二、每一次调用vue.extend&#xff0c;返回的事一个全新的 VueComponent VueComponent的源码如下&#xff1a; 三、组件中的this 组件中的this是VueComponent实例对象&#xff0c;结构和vm…

vite.config.js如何使用env的环境变量

了解下环境变量在vite中 官方文档走起 https://cn.vitejs.dev/guide/env-and-mode.html#env-variables-and-modes 你见到的.env,.env.production等就是放置环境变量的 官方文档说到.env.[mode] # 只在指定模式下加载,比如.env.development只在开发环境加载 至于为什么是deve…

前缀和算法:算法秘籍下的数据预言家

✨✨✨学习的道路很枯燥&#xff0c;希望我们能并肩走下来! 文章目录 目录 文章目录 前言 一. 前缀和算法的介绍 二、前缀和例题 2.1 【模版】前缀和 2.2 【模板】二维前缀和 2.3 寻找数组的中间下标 2.4 除自身以外数组的乘积 2.5 和为k的子数组 2.6 和可被k整除的子数组 2.7 …

maven编译【-Dmaven.test.skip=true和-DskipTests=true的区别】

1、背景 我在执行maven编译时&#xff0c;遇到下面情况&#xff1a; 1、当执行命令为下面&#xff1a; mvn clean compile package install -Dmaven.wagon.http.ssl.insecuretrue -Dmaven.wagon.http.ssl.allowalltrue -Dmaven.wagon.http.ssl.ignore.validity.datestrue -Dra…