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

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

http://www.kler.cn/a/406037.html

相关文章:

  • STM32完全学习——系统时钟设置
  • 微知-ib_write_bw的各种参数汇总(-d -q -s -R --run_infinitely)
  • pinia是什么?pinia简介快速入门,创建pinia到vue3项目中
  • JAVA八股与代码实践----JDK代理和CGLIB代理的区别
  • 解决IDEA报包不存在,但实际存在的问题
  • WebApis学习笔记,第二节:高级语法
  • 天气预报1天-中国气象局-地址查询版免费API接口教程
  • 「Mac玩转仓颉内测版27」基础篇7 - 字符串类型详解
  • 【HarmonyOS】鸿蒙应用加载读取csv文件
  • ISUP协议视频平台EasyCVR私有化视频平台新能源汽车充电停车管理方案的创新与实践
  • Kafka 分区分配及再平衡策略深度解析与消费者事务和数据积压的简单介绍
  • nuitka系列: 将py转为pyd文件
  • yolo自动化项目实例解析(九) 导航
  • RDD触发算子:collectAsMap以及foreachParition的语法以及举例使用
  • 第三讲 架构详解:“隐语”可信隐私计算开源框架
  • Elasticsearch 开放推理 API 增加了对 IBM watsonx.ai Slate 嵌入模型的支持
  • SpringBoot 整合Mybatis时读取部分数据为空或日期为空
  • C#超简单实现人脸识别
  • 虚拟浏览器可以应对哪些浏览器安全威胁?
  • macOS 无法安装第三方app,启用任何来源的方法
  • 利用uniapp开发鸿蒙:运行到鸿蒙模拟器—踩坑合集
  • 高级编程之结构化代码
  • 知识中台在多语言客户中的应用
  • SOL链上的 Meme 生态发展:从文化到创新的融合#dapp开发#
  • Jenkins迁移数据目录
  • C语言中const char *字符进行切割实现