Django

本文详细介绍Django框架的基础知识,包括安装、项目与应用创建、MVC与MTV设计模式、模型设计、视图函数、URL配置及模板使用,适合初学者快速掌握Django开发流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • Django是一种基于Python的Web开发框架,Web开发指的是开发基于B/S架构,通过前后端的配合,将后台服务器的数据在浏览器上展现给前台用户的应用
MVC与MTV设计模式

MVC设计模式

m Model  Model 模型 和数据库进行交互
V view   产生html页面
C: controler 控制器 接受请求 进行处理  与M和V进行交互 返回应答

在这里插入图片描述

MTV设计模式(Django的模块)


m Model  Model 模型 和数据库进行交互
V view   controler 控制器 接受请求 进行处理  与M和V进行交互 返回应答
T:Templata 产生html页面

django安装

pip install django==1.8.2

创建项目

使用 django-admin 来创建 Dgo 项目:

django-admin startproject Dgo

(dlcv) [root@bhs Dgo]# tree
.
├── Dgo
│   ├── __init__.py  # 说明时一个python包
│   ├── settings.py  # 项目的配置文件
│   ├── urls.py      # 进行url路由配置
│   └── wsgi.py      # web服务器与Django的交互的入口
└── manage.py        # 项目的管理文件

1 directory, 5 files

创建应用

在django中,每一个模块使用django应用来开发,一个项目又多个应用组成,每一个应用完成一个特定的功能
创建应用

(dlcv) [root@bhs Dgo]# python manage.py startapp nlp
(dlcv) [root@bhs Dgo]# ls
Dgo  manage.py  nlp

(dlcv) [root@bhs Dgo]# tree
.
├── Dgo
│   ├── __init__.py
│   ├── __pycache__
│   │   ├── __init__.cpython-38.pyc
│   │   └── settings.cpython-38.pyc
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── manage.py
└── nlp
    ├── admin.py   # 网站后台管理相关文件
    ├── __init__.py
    ├── migrations
    │   └── __init__.py
    ├── models.py
    ├── tests.py   # 写测试代码文件
    └── views.py

4 directories, 13 files

注册:

建立应用与项目之间的联系,需要对应用进行注册

(dlcv) [root@bhs Dgo]# pwd
/root/Dgo/Dgo
(dlcv) [root@bhs Dgo]# ls
__init__.py  __pycache__  settings.py  urls.py  wsgi.py
(dlcv) [root@bhs Dgo]# 

编辑项目Dgo内的文件settings.py 添加应用nlp
INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
	'nlp',  
)

运行开发web服务器命令

(dlcv) [root@bhs Dgo]# python manage.py runserver 172.18.109.240:8000
Performing system checks...

System check identified no issues (0 silenced).

You have unapplied migrations; your app may not work properly until they are applied.
Run 'python manage.py migrate' to apply them.

May 05, 2020 - 07:59:14
Django version 1.8.2, using settings 'Dgo.settings'
Starting development server at http://172.18.109.240:8000/
Quit the server with CONTROL-C.

http访问
在这里插入图片描述

Model

模型设计和表生产

(dlcv) [root@bhs nlp]# pwd
/root/Dgo/nlp
编辑  vim models.py 
from django.db import models

# Create your models here.
class BookInfo(models.Model):
        # 图书名称  CharField 表示字符串 max_length表示字符串的最大长度
        bittle=models.CharField(max_length=20)
        bpub_date=models.DateField()

模型类生成表
生产迁移文件
(dlcv) [root@bhs Dgo]# python manage.py makemigrations
Migrations for 'nlp':
  0001_initial.py:
    - Create model BookInfo

执行迁移生成表
(dlcv) [root@bhs Dgo]# python manage.py migrate
Operations to perform:
  Synchronize unmigrated apps: messages, staticfiles
  Apply all migrations: auth, admin, nlp, sessions, contenttypes
Synchronizing apps without migrations:
  Creating tables...
    Running deferred SQL...
  Installing custom SQL...
Running migrations:
  Rendering model states... DONE
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying nlp.0001_initial... OK
  Applying sessions.0001_initial... OK



查看修改Django使用的数据库
(dlcv) [root@bhs Dgo]# vi settings.py 
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

通过模型类操作数据库表
(dlcv) [root@bhs Dgo]# python manage.py shell

Python 3.8.2 (default, Mar 26 2020, 15:53:00) 
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> 
>>> 
>>> from nlp.models import BookInfo
>>> 
>>> b=BookInfo()
>>> b.btitle='天龙'
>>> from datetime import date
>>> b.bpub_date=date(2020,2,8)
>>> b.save()

>>> b2=BookInfo.objects.get(id=1)
>>>> b2.bpub_date
datetime.date(2020, 2, 8)


后台管理
本地化:语言和时区的本地化
(dlcv) [root@bhs Dgo]# vi settings.py 
LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'UTC'


创建管理员
(dlcv) [root@bhs Dgo]# python manage.py createsuperuser
Username (leave blank to use 'root'): admin
Email address: 841851466@qq.com
Password: 
Password (again): 
Superuser created successfully.


在这里插入图片描述
在这里插入图片描述

注册模型类

在应用下的admin.py注册模型类,告诉Django框架根据注册的模型来生成对应表管理页面
(dlcv) [root@bhs Dgo]# cd nlp/
(dlcv) [root@bhs nlp]# ls
admin.py  __init__.py  migrations  models.py  __pycache__  tests.py  views.py

(dlcv) [root@bhs nlp]# vim admin.py
# Register your models here.
from nlp.models import BookInfo
admin.site.register(BookInfo)


在这里插入图片描述

自定义显示页面

自定义模型管理类,模型管理类就是告诉Django在生成的管理页面上显示那些内容

view
  • Django中通过游览器请求一个页面时,使用视图函数来处理这个请求,视图函数处理之后,要给游览器返回页面内容
进入到应用目录中
(dlcv) [root@bhs nlp]# pwd
/root/Dgo/nlp
(dlcv) [root@bhs nlp]# ls 
admin.py  __init__.py  migrations  models.py  __pycache__  tests.py  views.py


(dlcv) [root@bhs nlp]# vim views.py 
(dlcv) [root@bhs nlp]# more views.py 
from django.shortcuts import render

# Create your views here.
from django.http import HttpResponse
def index(request):
	return HttpResponse("上市公司")

url配置

建立url与视图对应的关系
在项目的urls.py文件中包含具体应用的urls.py文件,应用的urls.py文件中写url与视图函数的对应关系
在这里插入图片描述

进入项目的目录中vi urls增加配置信息

from django.conf.urls import include, url
from django.contrib import admin
# url函数中有两个参数 第一个表示正则表达式,第二个表示对应大处理动作
urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
	url(r'^',include(nlp.urls))
]



进入应用文件夹

(dlcv) [root@bhs nlp]# vim urls.py
(dlcv) [root@bhs nlp]# ls
admin.py  __init__.py  migrations  models.py  __pycache__  tests.py  urls.py  views.py

(dlcv) [root@bhs nlp]# more urls.py
from django.conf.urls  import url
from nlp import views

urlpatterns = [
    url(r'^index$', views.index),

]

在这里插入图片描述

摸板

不仅仅是html文件 也可以使用一些变量,一般在项目目录下创建文件夹

(dlcv) [root@bhs Dgo]# mkdir templates

接下来我们需要向Django说明模板文件的路径,修改HelloWorld/settings.py,修改 TEMPLATES 中的 DIRS 为 [BASE_DIR+"/templates",],如下所示:
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [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',
            ],
        },
    },
]
修改 view.py,增加一个新的对象,用于向模板提交数据


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值