Django 开发教程

Django 开发教程

创建项目

在命令行中创建一个新项目,使用 startproject 命令:

$ django-admin startproject mysite

其中 mysite 可以换成任何你喜欢的项目名称。执行后会创建一个新目录,目录结构如下:

mysite/
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        asgi.py
        wsgi.py

可以看到 Django 自动生成了一些文件,这些文件都有各自的作用:

  • manage.py 用来在命令行和项目进行交互
  • mysite/init .py 告诉 Python 可以将 mysite 视为一个 Python 包。
  • mysite/settings.py 设置文件
  • mysite/urls.py 声明网站的 url
  • mysite/asgi.py ASGI-兼容的服务器入口
  • mysite/asgi.py WSGI-兼容的服务器入口

部署服务器

创建项目以后,在最外层的 mysite 目录下执行以下命令,可以部署服务器:

$ python manage.py runserver

但要注意,此服务器只能用作产品开发,最好不要用在产品上,因为 Django 的目的是为了开发网站,而不是运营网站。

当服务器运行时,访问 即可看到网页内容。

改变端口
若要改变端口,例如将端口改为 8080,启动服务器时执行 python manage.py runserver 8080
若要改变 IP 地址,例如将 IP 改为 0.0.0.0(简写为0),启动服务器时运行 python manage.py runserver 0:8000

自动重启
修改代码后,开发服务器会自动地重新加载 Python 代码,所以不用重启服务器也能看到网页的变化。

创建 APP

现在可以给项目创建一些应用程序了,让我们来创建一个可以自由绘制图表的程序。图表由文本框和各式各样的箭头组成,文本框里可以承载文字,图片和数学公式,而箭头可以呈现弯曲,波浪,虚线等各种形态。让我们开始吧。

首先在命令行创建 APP:

python manage.py startapp FreeDiagram

目录结构如下:

free-diagram/
    __init__.py
    admin.py
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    views.py

网页视图

首先要让网页显示点什么东西,Django 的内容显示是通过一个个函数实现的,每访问一个网站时,就会执行相应的函数,例如在这里,当你访问主页时, index就会被执行,返回的是一个 HttpResponse 对象,里面包含了网页要显示的内容。当然这里只是简简单单显示了一行文字,但后面会慢慢加入更多复杂的功能。

from django.http import HttpResponse

def index(request):
    return HttpResponse("Hello, world. You're at the polls index.")

URL 对应

要将 view.py 中的函数对应到相应的 URL,就需要编辑 urls.py,Django 没有为我们自动创建,因此需要手动创建一个空文件,建完以后目录结构如下:

free-diagram/
    __init__.py
    admin.py
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    urls.py
    views.py

然后要将 views.py 里的 index 函数与主页的 URL 对应上,编写如下代码即可:

from django.urls import path

from . import views

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

接下来要将 free-diagram 的 URL 汇入总项目的 URL 中,使用 include() 函数可以把 APP 中的 URL 并入总项目中。

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

urlpatterns = [
    path('free-diagram/', include('free-diagram.urls')),
    path('admin/', admin.site.urls),
]

数据库设置

现在,可以打开 mysite/settings.py 来查看一些和数据库有关的设置,可以更改如数据库引擎、名称、用户名、密码、主机等信息。

有些 APP 需要创建表才能正常运行,为此,需要执行:

$ python manage.py migrate

创建模型

通常,网页需要不断渲染许多相似的对象,我们需要遵循 DRY 原则(DON’T REPEAT YOURSELF),通过创建模型,可以很快地进行对网站的搭建。在我们的 Diagram 应用中,最基本的两个模型就是 文本框 和 箭头,打开 Diagram/models.py 文件,加入这两个模型:

from django.db import models

class TextBox(models.Model):
    text     = models.CharField(max_length=200)
    color_R  = models.IntegerField(default=0)
    color_G  = models.IntegerField(default=0)
    color_B  = models.IntegerField(default=0)
    font     = models.CharField(default='WeiRuanYeHei')
    fontsize = models.IntegerField(default=12)
    anchor_x = models.IntegerField(default=0)
    anchor_y = models.IntegerField(default=0)

class Arrow(models.Model):
    start_x = models.IntegerField(default=0)
    start_y = models.IntegerField(default=0)
    end_x   = models.IntegerField(default=0)
    end_y   = models.IntegerField(default=0)

激活 APP

建好模型以后,Django 提供了自动创建数据库和设置API接口的服务,而我们需要将 APP 激活,这些模型就会被真正创建。打开 FreeDiagram/settings.py,进行编辑:

INSTALLED_APPS = [
    'Diagram.apps.DiagramConfig',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

然后在命令行执行

$ python manage.py makemigrations polls

观察到如下输出,就说明成功了

Migrations for 'polls':
  polls/migrations/0001_initial.py
    - Create model Question
    - Create model Choice

调用 API

Django 提供了 shell 接口,让开发者可以把玩(测试)创建好的模型。命令行执行

$ python manage.py shell

然后就会出来一整个 IPython 的效果,我们先导入模型

>>> from polls.models import TextBox, Arrow

可以查看一个模型的所有的实例:

>>> TextBox.objects.all()

可以创建一个新实例:

>>> tb = TextBox(text='y=f(x)')

用户登录系统

创建用户

首先,我们需要创建一个管理员账号,也就是超级用户:

$ python manage.py createsuperuser

按照提示输入用户名和密码。

启动开发者服务器

运行服务器然后以管理员身份登录,先在命令行启动服务器:

$ python manage.py runserver

然后访问 http://127.0.0.1:8000/admin/, 输入用户名密码,管理员界面大概长这样:

Django 开发教程

可以看到用户信息和数据库信息。

; 让管理员界面可以修改应用

我们希望管理员在界面上可以修改一些已有的模型,打开 Diagram/admin.py,进行编辑:

from django.contrib import admin

from .models import TextBox

admin.site.register(TextBox)

请求与回应

在 Django 中,当一个页面被请求,一个 HTTPRequest 对象就会被创建。

Original: https://blog.csdn.net/weixin_43265267/article/details/122701858
Author: 他吃吃喝喝
Title: Django 开发教程

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

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

(0)

大家都在看

  • 初步认识Matplotlib

    1.认识Matplotlib Matplotlib是一个Python 2D绘图库,能够以多种硬拷贝格式和跨平台的交互式环境生成出版物质量的图形,用来绘制各种静态,动态,交互式的图表…

    Python 2023年9月2日
    038
  • 【Gunicorn】Gunicorn安装&相关配置&脚本

    Gunicorn介绍 官网官方文档 Gunicorn(绿色独角兽)是一个Python WSGI的HTTP服务器。从Ruby的独角兽(Unicorn )项目移植该Gunicorn服务…

    Python 2023年8月11日
    044
  • pandas:查看CSV、Excel表格及数据属性

    pandas:查看表格及数据属性 0 操作学习所用数据 1 数据描述 * 1.1 df.head()/ df.tail() 查看表格 – 1.1.1查看前3行表格 1….

    Python 2023年8月16日
    052
  • 2.DataFrame的构建和属性

    DataFrame用于存储二维values,具有行、列索引。 df = pd.DataFrame(data = [[1,’a’,[1,2,3]],[2,’s’,[2,3,4]]],…

    Python 2023年8月7日
    029
  • docker安装mongoDB及使用

    文章目录 一、mongoDB是什么? * 1. mongo的体系结构 2. mongoDB的特点(或使用场景) 3. mongoDB与mysql、redis对比 4. mongoD…

    Python 2023年9月16日
    039
  • 解锁一个新技能,如何在Python代码中使用表情包…

    当我们使用聊天工具聊天时,我们看到的基本表情通常是这样的。 [En] The basic emojis we see when we chat using chat tools u…

    Python 2023年5月24日
    092
  • 计算机网络最新复习【太原理工大学】

    一、题型 二、考点 一、题型 选择题 40 个,每个 1 分,共 40 分。(大部分可一眼看出答案) 填空题 15 个,每个 1 分,共 15 分。(需简单记忆) 简答题 5 个,…

    Python 2023年9月15日
    032
  • Python写入数据到Excel

    DataFrame.to_excel(excel_writer, sheet_name=’Sheet1′, na_rep=”, float_format=None, column…

    Python 2023年8月16日
    046
  • Python – pytest 测试框架(一)

    一、安装 pytest不是python默认的package,需要手动安装。 pytest支持python 2.6–3.5之间的版本,同时可以在windows、unix系…

    Python 2023年9月12日
    063
  • Python文件管理

    Python文件管理 一、 os模块 1、 方法大纲 2、 常用方法 二、 glob模块 1、 方法大纲 2、 使用示例 三、 shutil模块 1、 方法大纲 2、 压缩包 四、…

    Python 2023年6月9日
    054
  • 华为云主机的flask安装与使用

    华为云主机的flask安装与使用 第一步 安装虚拟环境 安装虚拟环境 安装 virtualevn 模块,使用豆瓣镜像: pip3 install virtualenv -i htt…

    Python 2023年8月11日
    038
  • Python3教程:Pandas模块删除数据的几种情况

    开始之前,pandas中DataFrame删除对象可能存在几种情况1、删除具体列2、删除具体行3、删除包含某些数值的行或者列4、删除包含某些字符、文字的行或者列针对这四种情况,本文…

    Python 2023年5月23日
    099
  • 科学数据库(Pandas)——第五节 数据的分组和聚合

    目录 groupby分组 聚合运算 索引和复合索引 练习: groupby分组 例如:grouped=df.groupby (by=”columns_name&#822…

    Python 2023年8月9日
    072
  • 迭代器执行切片

    普通的切片对迭代器无法实行切片操作 需要注意的是:islice会消耗迭代器中提供的元素,同时因为迭代器具有一次消耗性,所以: output: 462[] 避免迭代器中元素被全部消耗…

    Python 2023年10月30日
    020
  • Pandas学习笔记02 索引操作

    索引操作 前言 1.0 dataframe 数据 2.0 series对象取值 * 2.1 通过行索引取值 2.2 切片 2.3 高级索引 – 2.3.1 标签索引 2…

    Python 2023年8月22日
    068
  • 【pandas数据分析】pandas功能和操作简单示例

    文章目录 导入包 创建对象 * Series DataFrame 查看数据 选择 * 获取数据 按标签选择 按位置选择 布尔值索引 设置值 缺失值 一些操作 * 数据统计 应用(A…

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