django开发1

django开发

1. 安装django

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple django
anaconda\envs\...
    - python.exe
    - Scripts
        - pip.exe
        - django-admin.exe   [工具,创建django项目中的文件和文件夹]
    - Lib
        - 内置模块
        - site-packages
            - openpyxl
            - django   [框架的源码]

2. 创建项目

2.1 在终端

  • 打开终端

  • 进入某个目录(项目放在哪里)

  • 执行命令创建项目

    "D:\Anaconda\envs\python37_32\Scripts\django-admin.exe" startproject 项目名称
    
    如果D:\Anaconda\envs\python37_32\Scripts已经加入环境变量
    django-admin.exe startproject 项目名称
    

2.2 pycharm创建

必须是企业版才可以创建

2.3 默认项目文件介绍

mysite
    │  manage.py             [项目管理,数据库管理,启动项目,创建app][不要动][***常常用***]
    │
    └─mysite
            settings.py      [项目配置,连接数据库之类][***常常修改***]
            urls.py          [URL和python函数的对应关系][***常常修改***]
            wsgi.py          [接收网络请求][不要动]
            __init__.py

3. App

项目
    - app,用户管理[表结构、函数、Html模板、css...]
    - app,订单管理[表结构、函数、Html模板、css...]
    - app,后台管理[表结构、函数、Html模板、css...]
    - ...

注意:我们开发比较简洁,单app就可。
    python manage.py startapp app01 [创建app]

    ─app01
│  │  admin.py              [固定,不用动] django默认提供了后台管理
│  │  apps.py               [固定,不用动] app启动类
│  │  models.py             [**重要**] 对数据库进行操作
│  │  tests.py              [固定,不用动] 单元测试
│  │  views.py              [**重要**] 函数
│  │  __init__.py
│  │
│  └─migrations             [固定,不用动] 数据库字段变更
│          __init__.py

4. 快速上手

  • 确保app已经注册 [settings.py]

  • 编写URL和视图函数的对应关系 [urls.py]

  • 编写视图函数 [views.py]

  • 启动django项目

    • 命令行启动

      启动:python manage.py runserver
      终止:ctrl+c
      
    • pycharm启动

      需要企业版

4.1 再写一个页面

- url-->函数(views)

4.2 templates模板

4.3 静态文件

在开发过程中,一般将

  • 图片
  • css
  • js
  • ...

都会当作静态文件处理

4.3.1 创建static目录

4.3.2 引用静态文件

5. 模板语法

本质上,在html中写一些占位符,由数据对这些占位符进行替换和处理

<h1>模板语法的学习</h1>
<h2>str</h2>
<div>{{n1}}</div>
<hr/>
________________________________________
<h2>list</h2>
<div>{{n2}} </div>
<div>{{n2.0}} </div>
<div>
   {% for item in n2 %}
   <spa>{{item}}</spa>
   {% endfor %}
</div>
<hr/>
________________________________________
<h2>dict</h2>
<div>{{n3.name}}</div>
<ul>
   {% for k,v in n3.items %}
   <li>{{k}}={{v}}</li>
   {% endfor %}
</ul>
<ul>
   {% for key in n3.keys %}
   <li>{{key}}</li>
   {% endfor %}
</ul>
________________________________________
<ul>
   {% for value in n3.values %}
   <li>{{value}}</li>
   {% endfor %}
</ul>
<hr/>
________________________________________
<h2>条件语句</h2>
{% if n3.name == '刘彦开' %}
<div>yes yes yes yes</div>
{% else %}
<div>no no no no </div>
{% endif %}

6. 请求和响应

  • 三种响应方式

7. 数据库操作

7.1 安装第三方模块mysqlclient

  • windows根据环境搜索相应的mysqlclient包 网址
  • C:\Users\41055\Downloads>pip install mysqlclient-1.4.6-cp36-cp36m-win32.whl

7.2 ORM

ORM可以帮助我们做两件事:
   - 创建修改删除数据库中的表。(不用写sql语句)[无法创建数据库]
   - 操作表中的数据。(不用写sql语句)

7.2.1 创建数据库

用sqlyog创建

7.2.2 django连接数据库

在settings.py文件中进行配置和修改
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',   # 用mysql就写mysql
        'NAME': 'site_test',                    # 写数据库的名字
        'USER': 'root',                         # 用户名
        'PASSWORD': '',                         # 密码
        'HOST': '127.0.0.1',                    # mysql服务器
        'PORT': 3306,
    }
}

7.2.3 django 操作表(创建修改删除)

在models.py文件中进行修改
  • 创建表
from django.db import models

# Create your models here.
class UserInfo(models.Model):
    name=models.CharField(max_length=32)
    password=models.CharField(max_length=64)
    age=models.IntegerField()

等同于

"""
create table app01_userinfo(
    id bigint auto_increment primary key,
    name varchar(32),
    password varchar(64),
    age int
)
"""

执行命令:

python manage.py makemigrations
python manage.py migrate

注意:app需要提前注册

  • 在表中新增数据时,由于已存在列中可能已有数据,所以新增列必须指定新增列对应的数据:
      1. 手动输入一个值
      1. 设置默认值
      data1=models.IntegerField(default=3)
      
      1. 允许为空
      data2=models.IntegerField(null=True,blank=True)
      

7.2.4 django操作表中的数据

########## 1.新增 ########################
    Department.objects.create(title='销售部')
    Department.objects.create(title='it部')
    Department.objects.create(title='人力部')

########## 2.删除 ########################
    Department.objects.filter(id=3).delete()
    Department.objects.all().delete()

########## 3.获取 ########################
    data_list=UserInfo.objects.all()
    # data_list 是一个QuerySet类型,data_list=[对象,对象,对象],每个对象是一行
    for obj in data_list:
        print(obj.id,obj.name,obj.password,obj.age)

    # 获取第一条数据
    obj=UserInfo.objects.filter(id=3).frist()
    print(obj.id,obj.name,obj.password,obj.age)

########### 4.更新 ########################
    UserInfo.objects.all().update(password='999')
    UserInfo.objects.filter(id=3).update(age=1277)

案例:用户管理(orm数据库的应用)

1. 展示用户列表

  • url
  • 函数
    • 获取所有用户信息
    • HTML渲染

2. 添加用户

  • url
  • views函数
    • GET,看到页面,输入内容
    • POST,提交--->写入数据库

3. 删除用户

  • url
  • 函数
http://127.0.0.1:8000/user/delete?nid=1
http://127.0.0.1:8000/user/delete?nid=2
http://127.0.0.1:8000/user/delete?nid=3

def 函数(request):
    request.GET.get("nid")
    UserInfo.objects.filter(id=nid).delete()

posted @   田哥  阅读(74)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
点击右上角即可分享
微信分享提示