当前位置: 首页 > news >正文

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 viewsurlpatterns = [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
http://www.lryc.cn/news/490287.html

相关文章:

  • ChatGPT 桌面版发布了,如何安装?
  • ubuntu 配置 多个 git 客户端 账户
  • React Native的界面与交互
  • autogen+ollama+litellm实现本地部署多代理智能体
  • InstantStyle容器构建指南
  • 百度主动推送可以提升抓取,它能提升索引量吗?
  • A045-基于spring boot的个人博客系统的设计与实现
  • JavaEE 【知识改变命运】02 多线程(1)
  • Pytorch使用手册-Transforms(专题四)
  • 【Android】ARouter的使用及源码解析
  • ValueError: bbox_params must be specified for bbox transformations
  • 挂壁式空气净化器哪个品牌的质量好?排名top3优秀产品测评分析
  • 钉钉数据如何高效集成到金蝶云星空系统
  • 躺平成长-腾讯云数据库(又消失了一次)
  • 初学 flutter 问题记录
  • Hadoop的MapReduce详解
  • 全新配置ubuntu18.04深度学习环境
  • 持续集成与持续部署:CI/CD实现教程
  • 深度学习实验十二 卷积神经网络(3)——基于残差网络实现手写体数字识别实验
  • Linux系统如何排查端口占用
  • Linux常用命令之id命令详解
  • WGCLOUD如何部署在ARM平台
  • K8S + Jenkins 做CICD
  • HarmonyOS4+NEXT星河版入门与项目实战(11)------Button组件
  • 小米note pro一代(leo)线刷、twrp、magisk、TODO: android源码编译
  • 鸿蒙开发Hvigor插件动态生成代码
  • 使用ENSP实现静态路由
  • Java String 字符串常用操作
  • 4.4 MySQL 触发器(Trigger)
  • C语言——break、continue、goto