Django路由系统--实用介绍

154 阅读2分钟

编码员你好。

这篇文章是对Django路由系统的一个软性和实用的介绍。我们将在本教程中编写的样本,最后将实现三个路由:一个默认路由,显示一个经典的Hello World;第二个路由,在每次刷新页面时显示一个随机数字;最后一个路由将显示一个从互联网上提取的随机图片。

谢谢你的阅读!- 内容由App Generator提供。

什么是Django

Django是一个高水平的Python Web框架,它鼓励快速开发和简洁、务实的设计。它由经验丰富的开发人员构建,解决了Web开发的许多麻烦,因此你可以专注于编写你的应用程序,而不需要重新发明车轮。它是免费和开源的。

让我们来编写Django代码

检查Python版本--推荐版本为Python3

$ python --version
Python 3.8.4        <-- All good, we have a 3.x version

创建/激活一个虚拟环境 - 基于Unix的系统

$ virtualenv env
$ source env/bin/activate  

对于Windows,语法略有不同

$ virtualenv env
$ .\env\Scripts\activate

安装Django

$ pip install django

创建一个新的Django项目

$ mkdir my-django-sample
$ cd my-django-sample

在新目录内,我们将调用startproject 子命令。

$ django-admin startproject config .

注意:考虑到命令末尾的.

设置数据库

$ python manage.py makemigrations
$ python manage.py migrate

启动应用程序

$ python manage.py runserver 
$
$ # Access the web app in browser: http://127.0.0.1:8000/

这时我们应该在浏览器中看到默认的Django页面。

Django - Default Project Page.

创建一个新的Django应用程序

$ python manage.py startapp sample

添加一个简单的Django路由

让我们编辑sample/views.py ,如下图所示。

def hello(request): 
    return HttpResponse("Hello Django") 

配置Django以使用新的路由--更新config/urls.py ,如下图。

from django.contrib import admin
from django.urls  import path
from django.conf.urls import include, url   # <-- NEW
from sample.views import hello              # <-- NEW

urlpatterns = [
    path('admin/', admin.site.urls),
    url('', hello),                         # <-- NEW
]

换句话说,默认路由是由sample/views.py 中定义的hello 方法提供的。在访问根页面时,我们应该看到一个简单的Hello Word信息。

Django Routing - Simple Message returned to the user.

新路线--动态内容

让我们创建一个新的路由,显示一个随机数字 -sample/views.py

...
from random import random
...
def myrandom(request): 
    return HttpResponse("Random - " + str( random() ) ) 

这个新方法从Python核心库中调用random() ,将结果转换为字符串并返回结果。浏览器的输出应该与此类似。

Django Routing - Random number returned to the user.

新路线 - 随机图像

这个路由将从一个公共(和免费)服务中提取一个随机图像,并将返回的内容注入浏览器的响应中。为了实现这一目标,我们需要一个新的Python库,名为requests ,以便轻松地提取随机图像。

$ pip install requests

新路线的代码应该定义在sample/views.py

...
import requests
...
def randomimage(request):
    r = requests.get('http://thecatapi.com/api/images/get?format=src&type=png')
    return HttpResponse( r.content, content_type="image/png")

为了在浏览器中看到效果,应该对routing configuration 进行相应的更新。

# Contents of config/urls.py
...
from sample.views import hello, myrandom, randomimage # <-- Updated 
...
urlpatterns = [
    path('admin/'     , admin.site.urls),
    url('randomimage' , randomimage),                 # <-- New
    url('random'      , myrandom),
    url(''            , hello), 
]

下面是一个输出样本--从公共服务中随机抽取。

Django Routing - Random number returned to the user.

谢谢你的阅读!欢迎在评论区提出AMA。

更多Django资源

  • 阅读更多关于Django的信息(官方文档)
  • 使用可开发的Django启动器快速启动一个新项目