Django

1.1 什么是django

Django的主要目的是简便、快速的开发数据库驱动的网站。它强调代码复用,多个组件可以很方便的以”插件”形式服务于整个框架,Django有许多功能强大的第三方插件,你甚至可以很方便的开发出自己的工具包。

特点:Django原生提供了众多的功能组件,让开发更简便快速。

1.2 搭建虚拟环境

pip install virtualenv
pip install virtualenvwrapper
注意:安装时后台不要有vpn vpn vpn(重要的事情说三遍,这是血的教训)

1.3 创建虚拟环境

mkvirtualenv -p python3 虚拟环境名称
例 :
mkvirtualenv -p python3 py3_django

1.4 查看虚拟环境

workon 虚拟环境名称
例 :
workon py3_django

1.5 推出虚拟环境

deactivate

1.6 删除虚拟环境

rmvirtualenv 虚拟环境名称

例 :

先退出:deactivate
再删除:rmvirtualenv py3_django
django-admin startproject bookmanager
设置虚拟环境的python
pycharm创建工程

python manager.py startapp name

例:
————————————————————————

书籍信息

西游记 孙悟空 白骨精

三国演义 曹操 貂蝉

————————————————————————

书籍信息表

字段名 字段类型 字段说明

id AutoField 主键

name CharField 书名

————————————————————————

id name

1 西游记

2 三国演义

————————————————————————

人物信息表

字段名 字段类型 字段说明

id AutoField 主键

name CharField 人名

gender BooleanField 性别

book ForeignKey 外键

————————————————————————

id name gender book

1 孙悟空 False 1

2 白骨精 False 1

3 曹操 False 2

4 貂蝉 False 2

4.1 定义模型类

根据书籍结构设计模型类
(写在 book 下的 models.py 里)


class BookInfo(models.Model):

    name = models.CharField(max_length=20, null=False)

根据人物表结构设计模型类


class PeopleInfo(models.Model):

    name = models.CharField(max_length=20, null=False)

    gender = models.BooleanField()

    book = models.ForeignKey(BookInfo, on_delete=models.CASCADE)

4.2 注册子应用

(在book下的settings.py 里的 添加 book)

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

    'book',
]

4.3创建一个数据库 bookdb

create database bookdb charset=utf8

4.4 在seyyings.py 修改mysql配置

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

注意:里面的密码是自己mysql的密码

4.5 安装pip install pymysql

在终端 写入 pip install pymysql 安装

注意 要在 book 下 的 init.py 里添加

import pymysql

pymysql.install_as_MySQLdb()
终端  写入  python manage.py makemigrations

可能会出现报错

报错的话  去 operations.py   里

把 query = query.decode(errors="replace")里的

decode  改成  encode    (强制修改)
在终端  写入
python manage.py migrate

然后在数据库里查看表

1.视图的作用

mvt view 处理前端发来的请求,处理逻辑 返回响应

2.如何定义函数视图

在 book 下的 views.py 文件 添加

from django.shortcuts import render
from django.http import HttpResponse

"""
主页视图
request  是前端发来的请求 封装到了这个对象里
"""

def index(request):
    print("处理复杂逻辑1")
    print("处理复杂逻辑2")

    return HttpResponse("娄娄")

3…如何配置访问的路径

注意两个 urls 文件位置

在 book 下 新建一个 urls.py 文件 写入

from django.contrib import admin
from django.urls import path
from book.views import index

urlpatterns = [
    path('index/', index),
]

在 bookmanager 下 的 urls.py 文件 写入

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

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

4.访问测试

打开 网页测试 如果返回的结果是自己写的结果 就成功

(在 book 下的 views.py 文件 写返回的结果)

http://127.0.0.1:8000/index/

了解模板的作用 会写一个简单的模板

1.写模板 html文件

DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>主页title>

head>
<body>
<h1>
    一级标题
h1>
<a href="http://www.baidu.com">baidua>
<a href="http://www.baidu.com">{{ text }}a>

body>
html>
在  TEMPLATES  里

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',

        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

2.视图里面如何用模板去返回数据

from django.shortcuts import render
from django.http import HttpResponse

"""
主页视图
request  是前端发来的请求 封装到了这个对象里
"""

def index(request):
    print("处理复杂逻辑1")
    print("处理复杂逻辑2")

    context = {"text": "今天台湾回来啦"}

    return render(request, "book/index.html", context)
DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>主页title>

head>
<body>
<h1>
    一级标题
h1>
<a href="http://www.baidu.com">baidua>
<a href="http://www.baidu.com">{{ text }}a>

body>
html>`
## 3.查看结果
http://127.0.0.1:8000/index/
页面  会显示

Original: https://blog.csdn.net/lhblmd/article/details/121564312
Author: Lou…..
Title: Django

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/735090/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球