Django笔记(一)

本文深入讲解Django框架的使用,包括其与SQLite和MySQL数据库的交互,ORM技术的应用,以及如何进行模型定义、数据操作、路由配置和模版渲染。同时,介绍了Django的开发流程,从创建应用、定义视图到启动测试服务器。
摘要由CSDN通过智能技术生成

Django

SQLite

  • 轻量级的嵌入式级的数据库
  • 特点是小
    • 常用场景
    • Android.IOS
  • 数据库常规操作相似度和MySQL达95%

快捷键

python manage.py makemigrations 迁移
Alt+Enter 快速导包
ctrl+p 参数提示
ctrl+d 复制一行,插入到下面
alt+shift+↑↓ 移动一行

实现一个请求

  • 注册一个路由
    • urls中
      • url
        • 参数1 匹配规则 正则
      • 视图函数
        • 对应的是views中等一个函数
          • 没有括号
  • 去views实现对应的视图函数
    • 第一的参数是request
    • 永远记得返回Response

html

-ul>li
-ul * 5
再按下
快捷Tab

模版配置

  • 两种
    • 在App中进行模版配置
      • 只需在App的根目录中创建templates文件夹即可
      • 如果向让代码自动提示,我们应该标记文件夹为模版文件夹
    • 在项目目录中进行模版配置
      • 需要在项目目录中创建templates文件夹并标记
      • 需要在settings中进行注册
    • 在开发中使用第二种
      • 模版可以继承、复用

路由优化配置

  • 项目如果逻辑过于复杂,可以进行拆分
  • 拆分为多个App
  • 继续拆分路由器 urls
    • 在App中创建自己的urls
      • urlpatterns路由规则列表
      • 在根urls中进行子路由的包含
    • 子路由的使用
      • 根路由规则 + 子路由规则

models 使用了ORM技术

  • Object Relatoion Mapping 对象关系映射

  • 将业务逻辑进行了一个解耦合

    • object.save()
    • object.delete()
  • 关系型数据库

    • DDL 定义数据库
    • Django 通过models定义实现,数据库表的定义
  • 数据操作

    • 增删改查
    • 存储
      • save()
    • 查询
      • 查所有 objects.all()
      • 查单个 objects.get(pk=XX)
    • 更新
      • 基于查询的
      • 查好的对象,修改属性,然后save()
    • 删除
      • 基于查询的
      • 调用 delete()

连接mysql驱动

  • mysqlclient

    • 优点:python2,3都能直接使用
    • 致命弱点
      • 对mysql安装有需求,必须指定位置存在配置文件
  • python-mysql

    • 优点:python2支持很好
    • 缺点:python3不支持
  • pymysql

    • 优点:python2,3都支持
    • 还可以伪装成前面两种库

换源

pip install pymysql -i https://pypi.douban.com/simple

测试服务器的启动

python manage.py runserver [ip:port]

可以直接进行服务器运行 默认执行起来的端口是8000
也可以自己指定ip和端口
ip指定为0.0.0.0的时候,匹配本机的全部ip

浏览器访问 localhost:8000可以看到服务器启动成功

迁移数据,pyCharm连接数据库

迁移的概念:就是将模型映射到数据库的过程

生成迁移文件:python manage.py makemigrations
执行迁移:python manage.py migrate

介绍DataBase模块,可以直接连接操作数据库Sqlite和MySQL

  • 连接MySQL
    • 修改settings
      ‘ENGINE’: ‘django.db.backends.mysql’,
      ‘NAME’: ‘mydjango’, # 数据库名
      ‘USER’: ‘root’, # 用户名
      ‘PASSWORD’: ‘123456’, # 密码
      ‘HOST’: ‘127.0.0.1’, # ip地址
      ‘PORT’: ‘3306’, # 端口号
    • 进入MySQL中创建learn库
      • mysql -uroot -p123456
      • create database mydjango charset=utf8;
        看到Query OK, 1 row affected (0.02 sec)说明成功
    • 在pyCharm中连接MySQL
      右边Database中点击加号,选择Data Source中的MySQL填好相应信息进行测试,
      如果是第一次测试需要点击下方叹号旁边的Download下载相应驱动
      此时数据库中暂无任何数据
    • 安装驱动 pip install pymysql
    • 把驱动伪装
      在__init__.py中
      import pymysql
      pymysql.install_as_MySQLdb()
    • 第一次时需要执行python manage.py makemigrations生成迁移文件
    • 执行python manage.py migrate 执行迁移

创建应用

  • 使用python manage.py startapp xxx
    创建名为XXX的应用
  • 使用应用前需要将应用配置到项目中,在settings.py中将应用加入到settings的INSTALLED_APPS选项中

项目目录介绍

init.py:其中暂无内容,使得app成为一个包
admin.py:管理站点模型的声明文件,默认为空
apps.py:应用信息定义文件,在其中生成了AppConfig,该类用于定义应用名等信息
modles.py:添加模型层数据类文件
views.py:定义URL相应函数(路由规则)
migrations包:自动生成,生成迁移文件的
tests.py:测试代码文件

基本试图

首先我们在views.py中建立一个路由响应函数
from django.http import HttpResponse

def welcome(request):
return HttpResponse(“HelloDjango”)

接着我们在urls中进行注册
from django.conf.urls import url

from App import views

urlpatterns = [
url(r’addstudent/’, views.add_student),
url(r’getstudents/’, views.get_students),
url(r’updatestudents/’, views.update_students),
url(r’deletestudents/’, views.delete_students),
]

基于模块化的设计,我们通常会在每个app中定义自己的urls

在项目的urls中将app的urls包含进来

from django.contrib import admin
from django.urls import path, include
from App import views

urlpatterns = (
path(r’admin/’, admin.site.urls),
path(r’hello/’, views.hello),
path(r’index/’, views.index),
path(r’home/’, views.home),
path(r’App/’, include(‘App.urls’)),

)

基本模版

模版实际上就是我们用HTML写好的页面

创建模版文件夹,两种,在工程目录的需要注册settings中的TEMPLATES中添加
‘DIRS’: [
os.path.join(BASE_DIR, ‘templates’),
],
在模版文件夹中创建模版文件

在views中去加载渲染模版
1.from django.template import loader
template = loader.get_template(‘xxx’)
return HttpResponse(template.render())

2.return render(request,‘xxx’)

django shell

  • 集成了python环境的shell终端
  • 通常在终端中做一些调试工作
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值