python之使用django框架开发web项目

        本问将对django框架在python的web项目中的使用进行介绍,有不对之处,烦请指正。

        首先使用创建一个django工程(本示例中使用pycharm2024+python3.12),名称和项目保存路径根据自己的需要自行修改,新手直接默认本机环境就好(关于conda将会另开一篇进行讲解。),最后点击create即可。

interpreter type:表示项目运行的环境

        -project venv:本机的环境

        -base conda:使用conda创建的虚拟环境(其中windows系统可以使用anaconda或者minconda)

        -custom environment:自定义

1、目录

manage.py : 项目的管理,启动项目‘创建app、数据管理 【不要动,常用】

项目同名文件夹:

  • __init__.py

  • asgi.py:接收网络请求 【不要动】

  • settings.py:项目配置文件 【**常操作*****】

  • urls.py: URL和函数的对应关系【**常操作*****】

  • wsgi.py:接收网络请求 【不要动】

删除settings.py文件中的DIR templates

2、创建app

python manage.py startapp app01 增加 app01

--migrations 固定,不用动 数据库变更记录

--__init__.py

--__init__.py

--admin.py 固定,不用动 默认提供了admin后台管理

--apps.py 固定,不用动 app启动类

--models.py 重要,对数据库操作

--tests.py 单元测试 固定,不用动

--views.py 重要,视图函数

3、注册app

在settings.py文件中找到 INSTALLED_APPS,增加'app01.apps.App01Config',

app01.apps.App01Config为对2中创建的app目录里面apps.py里面的类

--javascripttypescriptshellbashsqljsonhtmlcssccppjavarubypythongorustmarkdown

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app01.apps.App01Config',  #  注册app
]

4、编写URL和视图函数的对应关系【urls.py】

--javascripttypescriptshellbashsqljsonhtmlcssccppjavarubypythongorustmarkdown

from django.contrib import admin
from django.urls import path
#1、导入app的views
from app01 import views

urlpatterns = [
    path('admin/', admin.site.urls),
	#2、增加对应关系
    path('index/', views.index),

	# 通过url传值    django3中才有这种方式,1中需要写正则表达式
    path('useredit/<int:nid>', views.user_list),
]

5、编写对应视图函数【views.py】

--javascripttypescriptshellbashsqljsonhtmlcssccppjavarubypythongorustmarkdown

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

# Create your views here.

#request参数是默认必须的
def index(request):
    return HttpResponse("Hello, world. You're at the polls index.")

def useredit(req,nid):
    return render(req, 'useredit.html')

6、启动项目

--目录启动: python manage.py runserver

--pycharm:

7、页面模版

7.1 加载顺序

--javascripttypescriptshellbashsqljsonhtmlcssccppjavarubypythongorustmarkdown

#1、优先去项目根目录的templates中寻找(提前先配置)【不配置无效】
#2、根据app的注册顺序,逐一去他们的templates目录中找

7.2 模版的继承

layout.html模版文件

--javascripttypescriptshellbashsqljsonhtmlcssccppjavarubypythongorustmarkdown

<div>
     {% block content %}{% endblock %}
</div>

继承的html文件

--javascripttypescriptshellbashsqljsonhtmlcssccppjavarubypythongorustmarkdown

{#模版继承#}
{% extends 'layout.html' %}

{% block content %}
    <h1>首页</h1>


{% endblock %}

注意

form表单无法访问跳转页面是,需要在form表单里面增加一行:{% csrf_token %}

8、静态文件

创建static文件夹

-css

-img

-js

-plugins

--javascripttypescriptshellbashsqljsonhtmlcssccppjavarubypythongorustmarkdown

{% load static %}

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <img src="{% static 'img/1.png' %}">
    <h1>用户列表</h1>
</body>
</html>

9、操作数据库:orm框架

pip install mysqlclient(等价于pymysql)

9.1 ORM

1 、创建、修改、删除数据库的表(不用写sql,但是无法创建数据库)

2、操作表中数据

9.2 连接数据库

在settings.py中修改默认配置

--javascripttypescriptshellbashsqljsonhtmlcssccppjavarubypythongorustmarkdown

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}

在python3中,mysql使用mysqlclient

9.3 操作表

创建表:在models.py文件中:

--javascripttypescriptshellbashsqljsonhtmlcssccppjavarubypythongorustmarkdown

class UserInfo(models.Model):
    name = models.CharField(max_length=32, verbose_name='姓名')
    password = models.CharField(max_length=64, verbose_name='密码')
    email = models.EmailField(verbose_name='邮箱')
    phone = models.CharField(max_length=11, verbose_name='手机号')
    gender_choices = (
        (1, '男'),
        (2, '女'),
    )
    gender = models.IntegerField(choices=gender_choices, verbose_name='性别')
    depart = models.ForeignKey(to='Department', on_delete=models.CASCADE, verbose_name='部门')
    create_time = models.DateTimeField(verbose_name='创建时间', aut

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于YOLOv8深度学习的扰乱公共秩序打架异常行为检测系统研究与实现(PyQt5界面+数据集+训练代码)

随着智能监控技术和人工智能的发展&#xff0c;基于深度学习的行为检测技术在公共安全和防范领域中发挥着越来越重要的作用。传统的监控系统通常依赖于人工监控&#xff0c;这不仅耗费大量的人力和时间&#xff0c;且容易因为人的疲劳或疏忽而漏检关键的异常行为。而近年来&…

gocv调用opencv添加中文乱码的解决方案

前言 相信很多做视觉的同学在使用opencv给图片添加中文文字的时候会出现这样的乱码显示: 而实际上你期望的是“告警时间:2011-11-11 11:11:11 告警类型:脱岗检测告警 Area:XXXXX Camera:Camera001-001”这样的显示内容,那么这篇文章我将用很简单的方法来解决乱码问题,只需…

JavaScript中的this指向问题

JavaScript中的this指向问题 1.1 为什么需要this? 为什么需要this? 在常见的编程语言中&#xff0c;几乎都有this这个关键字&#xff08;Objective-C中使用的是self),但是在JavaScript中的this和常见的面向对象语言中的this不太一样 常见面向对象的编程语言中&#xff0c;比…

预测气动阻尼

TLDR&#xff1a;通过结合 ANSYS Mechanical 和 ANSYS CFX&#xff0c;可以通过模拟预测气动阻尼。此方法可用于涡轮叶片、飞机机翼或 MEMS 微镜&#xff01; MEMS 系统的频率响应。峰值的高度取决于阻尼……那么阻尼比是多少&#xff1f; 多年来&#xff0c;很多人问我“嘿&am…

在 CentOS 系统上直接安装 MongoDB 4.0.25

文章目录 步骤 1&#xff1a;配置 MongoDB 官方源步骤 2&#xff1a;安装 MongoDB步骤 3&#xff1a;启动 MongoDB 服务步骤 4&#xff1a;验证安装步骤 5&#xff1a;可选配置注意事项 以下是在 CentOS 系统上直接安装 MongoDB 4.0.25 的详细步骤&#xff1a; 步骤 1&#x…

.NET9 - 新功能体验(一)

被微软形容为“迄今为止最高效、最现代、最安全、最智能、性能最高的.NET版本”——.NET 9已经发布有一周了&#xff0c;今天想和大家一起体验一下新功能。 此次.NET 9在性能、安全性和功能等方面进行了大量改进&#xff0c;包含了数千项的修改&#xff0c;今天主要和大家一起体…

乐理的学习(调式)

大致了解乐理之后的总结 跟着西蒙哥也是把基础乐理差不多能有一个大致的总结框架了&#xff0c;主要还是为了弹钢琴&#xff0c;也是知道了很多的规则都是为了人们的感受服务的 对手指要了解 对于手指的弹音局限 各个手指的使用频率 不同年龄的不同的人对手指的使用存在差…

08 —— Webpack打包图片

【资源模块 | webpack 中文文档 | webpack中文文档 | webpack中文网】https://www.webpackjs.com/guides/asset-modules/?sid_for_share99125_3 Webpack打包图片以8KB为临界值判断 大于8KB的文件&#xff1a;发送一个单独的文件并导出URL地址 小于8KB的文件&#xff1a;导出一…

Python爬虫能处理动态加载的内容吗?

Python爬虫确实可以处理动态加载的内容。动态加载的内容通常是通过JavaScript在客户端执行&#xff0c;这意味着当网页首次加载时&#xff0c;服务器返回的HTML可能并不包含最终用户看到的内容。相反&#xff0c;JavaScript代码会在页面加载后从服务器请求额外的数据&#xff0…

SQL注入--DNSlog外带注入--理论

什么是DNSlog? DNS的作用是将域名解析为IP 而DNSlog就是存储在DNS服务器上的域名信息&#xff0c;它记录着用户对域名访问信息。可以理解为DNS服务器上的日志文件。 多级域名 比如blog.csdn.net&#xff0c;以点为分隔&#xff0c;从右向左依次是顶级域名、二级域名、三级域…

【Flask+Gunicorn+Nginx】部署目标检测模型API完整解决方案

【Ubuntu 22.04FlaskGunicornNginx】部署目标检测模型API完整解决方案 文章目录 1. 搭建深度学习环境1.1 下载Anaconda1.2 打包环境1.3 创建虚拟环境1.4 报错 2. 安装flask3. 安装gunicorn4. 安装Nginx4.1 安装前置依赖4.2 安装nginx4.3 常用命令 5. NginxGunicornFlask5.1 ng…

速度革命:esbuild如何改变前端构建游戏 (1)

什么是 esbuild&#xff1f; esbuild 是一款基于 Go 语言开发的 JavaScript 构建打包工具&#xff0c;以其卓越的性能著称。相比传统的构建工具&#xff08;如 Webpack&#xff09;&#xff0c;esbuild 在打包速度上有着显著的优势&#xff0c;能够将打包速度提升 10 到 100 倍…

Ros Noetic 20.04 跑通mpc_ros包保姆级教程

前言: 本文将简述mpc_ros包在noetic20.04中的安装,mpc是 一种跟踪、MPC_ROS 是一个基于ROS(Robot Operating System)的模型预测控制(Model Predictive Control,MPC)库。该项目旨在为机器人控制提供一个灵活且高效的MPC实现,使得开发者能够在ROS环境中轻松集成和使用MPC…

接上一主题,C++14中如何设计类似于std::any,使集合在C++中与Python一样支持任意数据?

这篇文章的重点是C多态的应用&#xff0c;但是如果你是C新手&#xff0c; 你需要了解以下C知识&#xff1a; 类 构造函数 拷贝构造函数 虚拟函数 纯虚拟函数 析构函数 类的继承 运算符重写 模板类 模板参数 数组 数组的传递 指针与动态内存分配 Python&#xff1a; s …

AndroidStudio与开发板调试时连接失败或APP闪退的解决方案,涉及SELINUX及获取Root权限

现象 用AndroidStudio打开工程代码,点击运行后,报错: 解决方案 具体原因是尝试运行 su(通常用于获取超级用户权限)时失败了,提示 “Permission denied” 通过 CONFIG_SECURITY_SELINUX 变量控制 SElinux 开启或关闭 在vim /rk3568_android_sdk/device/rockchip/rk…

数据结构 (6)栈的应用举例

1. 递归调用 递归函数在执行时&#xff0c;会将每一层的函数调用信息&#xff08;包括局部变量、参数和返回地址&#xff09;存储在栈中。当递归函数返回时&#xff0c;这些信息会从栈中弹出&#xff0c;以便恢复之前的执行状态。栈的后进先出&#xff08;LIFO&#xff09;特性…

QT 网络编程 数据库模块 TCP UDP QT5.12.3环境 C++实现

一、网络编程 1. 模块引入 QT network 2. 头文件 #include <QTcpServer> //TCP服务端使用 #include <QTcpSocket> //TCP服务器和客户端都使用 3. TCP网络编程流程 1) 服务端 实例化QTcpServer对象----------------------------->socket 进入监听状态…

使用ENSP实现NAT

一、项目拓扑 二、项目实现 1.路由器AR1配置 进入系统试图 sys将路由器命名为R1 sysname R1关闭信息中心 undo info-center enable进入g0/0/0接口 int g0/0/0将g0/0/0接口IP地址配置为12.12.12.1/30 ip address 12.12.12.1 30进入e0/0/1接口 int g0/0/1将g0/0/1接口IP地址配置…

Python的tkinter如何把日志弄进文本框(Text)

当我们用python的Tkinter包给程序设计界面时&#xff0c;在有些时候&#xff0c;我们是希望程序的日志显示在界面上的&#xff0c;因为用户也需要知道程序目前运行到哪一步了&#xff0c;以及程序当前的运行状态是否良好。python的通过print函数打印出来的日志通常显示在后台&a…

flux的版本

1.flux1-dev.safetensors https://huggingface.co/black-forest-labs/FLUX.1-devhttps://huggingface.co/black-forest-labs/FLUX.1-dev原生的23.8G的模型。原生12B的模型,float16的。需要配合ae.safetensors,flux1-dev.safetensors以及clip-l和T5的权重使用,注意ae.sft和f…