IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 第一章 Django快速入门 -> 正文阅读

[Python知识库]第一章 Django快速入门

1. 环境搭建

Django 版本Python 版本
2.23.5,3.6,3.7,3.8(2.2.8 添加),3.9(2.2.17 添加)
3.13.6,3.7,3.8,3.9(3.1.3 添加)
3.23.6, 3.7, 3.8, 3.9, 3.10 (在 3.2.9 中就已经加入了)
4.0, 4.13.8,3.9,3.10

参考:https://docs.djangoproject.com/zh-hans/4.1/faq/install/#faq-python-version-support

安装django正式发布版

python -m pip install Django

查看django版本

python -m django --version

创建django项目

django-admin startproject django_learn

项目结构

.
├── django_learn
│   ├── asgi.py
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── manage.py

项目运行到0.0.0.0:8080

python manage.py runserver 0:8080

2. 快速开发

在manage.py同级目录创建app

python manage.py startapp myapp

settings.py注册app

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'myapp',
]

settings.py配置允许访问的地址

ALLOWED_HOSTS = ['*']

views.py

from django.http import HttpResponse


def index(request):
    return HttpResponse('hello world')

myapp目录下新建urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('', views.index, name='index')
]

django_learn/urls.py 新增app目录下的urls.py

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

urlpatterns = [
    path('admin/', admin.site.urls),
    path('myapp/', include('myapp.urls'))
]

启动项目,访问 http://127.0.0.1:8080/myapp/

urlpatterns使用方式

3. 数据库使用

以mysql为例(参考:https://docs.djangoproject.com/zh-hans/4.1/ref/databases/#mysql-notes

安装mysql相关依赖(以ubuntu为例,其他环境参考:https://pypi.org/project/mysqlclient

sudo apt-get install python3-dev default-libmysqlclient-dev build-essential
pip install mysqlclient

在settings.py配置mysql数据库

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'django_learn',
        'USER': 'root',
        'PASSWORD': '123456',
        'HOST': '127.0.0.1',
        'PORT': '3306',
    }
}

ENGINE配置其他数据库

    'django.db.backends.postgresql'
    'django.db.backends.sqlite3'
    'django.db.backends.oracle'

自定义表对象myapp/models.py

from django.db import models


# Create your models here.


class Subject(models.Model):
    """
    科目
    """
    name = models.CharField(max_length=50, verbose_name='科目名')
    create_time = models.DateTimeField(verbose_name='创建时间')
    update_time = models.DateTimeField(blank=True, null=True, verbose_name='更新时间')
    is_delete = models.BooleanField(default=False, verbose_name='逻辑删除')

    class Meta:
        db_table = 'tb_subject'


class Student(models.Model):
    """
    学生
    """
    name = models.CharField(max_length=50, verbose_name='学生名')
    age = models.IntegerField(verbose_name='年龄')
    create_time = models.DateTimeField(verbose_name='创建时间')
    update_time = models.DateTimeField(blank=True, null=True, verbose_name='更新时间')
    is_delete = models.BooleanField(default=False, verbose_name='逻辑删除')
    sid = models.ForeignKey(Subject, on_delete=models.DO_NOTHING, db_column='sid', verbose_name='科目id')

    class Meta:
        db_table = 'tb_student'

  • db_table:配置表名
  • on_delete:配置外键关联删除
  • verbose_name:字段在后台系统显示的名称

执行迁移

python manage.py makemigrations myapp

修改的内容被保存到myapp/migrations/0001_initial.py

查看对应的sql语句

python manage.py sqlmigrate myapp 0001
--
-- Create model Subject
--
CREATE TABLE `tb_subject` (`id` bigint AUTO_INCREMENT NOT NULL PRIMARY KEY, `name` varchar(50) NOT NULL, `create_time` datetime(6) NOT NULL, `update_time` datetime(6) NULL, `is_delete` bool NOT NULL);
--
-- Create model Student
--
CREATE TABLE `tb_student` (`id` bigint AUTO_INCREMENT NOT NULL PRIMARY KEY, `name` varchar(50) NOT NULL, `age` integer NOT NULL, `create_time` datetime(6) NOT NULL, `update_time` datetime(6) NULL, `is_delete` bool NOT NULL, `sid` bigint NOT NULL);
ALTER TABLE `tb_student` ADD CONSTRAINT `tb_student_sid_c066e3db_fk_tb_subject_id` FOREIGN KEY (`sid`) REFERENCES `tb_subject` (`id`);

确认无误后迁移到数据库

pyhton manage.py migrate

在这里插入图片描述
view.py

def get_subject(request):
    subjects = Subject.objects.all()
    data = [{'name': s.name} for s in subjects]
    return HttpResponse(data)


def set_subject(request):
    name = request.GET['name']
    subjects = Subject()
    subjects.name = name
    subjects.create_time = datetime.datetime.now()
    subjects.save()
    return HttpResponse('ok')

  • request.GET:获取请求参数
  • Subject.objects.all():查询tb_subject表所有数据

url.py

    path('stu/get_subject', views.get_subject, name='get_subject'),
    path('stu/set_subject', views.set_subject, name='set_subject'),

访问浏览器

http://0.0.0.0:8080/myapp/stu/set_subject?name=语文
http://0.0.0.0:8080/myapp/stu/set_subject?name=数学
http://0.0.0.0:8080/myapp/stu/get_subject

4. 后台管理系统

创建超级用户

python manage.py createsuperuser

注册subject对象
myapp/admin.py

from django.contrib import admin

# Register your models here.
from myapp.models import Subject

admin.site.register(Subject)

在这里插入图片描述

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-10-17 12:28:59  更:2022-10-17 12:32:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/17 8:23:03-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码