尝试在使用pipenv创建的Django环境中运行Python
概述
本文是一个初学者以RESTful API和Swift开发针对iPhone的优惠券分发服务的步骤按顺序写成的文章。由于在实施过程中逐个研究技术要素,所以实现非常绕远的方式。
我将在使用pipenv构建的虚拟环境中安装Django,并尝试运行Django程序。我将使用VSCode作为编辑器。
参考:
-
- Python Django 超入門 掌田津耶乃 著 秀和システム
- https://qiita.com/dynamonda/items/5a8129cd6e9cc139d94a
环境
MacOS 10.15
pipenv 版本2018.11.26
Django 2.2.6
VSCode 1.39.2
操作步骤
-
- Django のプロジェクトを作成する
-
- VSCodeがpipenvのpythonを参照するように設定
-
- djangoのサーバーを起動してみる
-
- サンプルプログラムを作成
- 動作確認
创建 Django 项目
在创建了Pipenv虚拟环境(项目)的目录中,执行以下命令进入Pipenv的shell(chell)。
$ pipenv shell
在pipenv的Shell中,执行以下命令以创建Django项目。
$ django-admin startproject [プロジェクト名]
执行命令后没有任何显示的话,很可能是成功的。执行ls命令时,应该会创建一个名为你所创建的项目名称的目录。就我个人而言,我选择了”ami_coupon_api”作为项目名称,所以也创建了一个同名的目录。
为了在VSCode中使用Python,要安装扩展功能。
如果您現在已經安裝了VSCode,那可能沒有安裝Python擴展功能。請按照以下步驟最低限度安裝Python擴展功能。
-
- 从VSCode的左侧菜单中打开Extensions(它的图标看起来是四个方块排列的)
-
- 在搜索框(在Marketplace中搜索Extensions)中输入Python
- 显示出与Python相关的扩展功能列表,选择由Microsoft创建的Python扩展功能,并点击绿色的Install按钮。
请将VSCode的配置设置为参考pipenv的python。
如果不进行此设置,则VS Code无法正确加载在pipenv构建的虚拟环境中的Django,并会显示错误消息。
首先,进入pipenv的终端,然后查看pipenv虚拟环境中python的路径。
$ which python
接下来打开VSCode,然后打开刚刚创建的Django项目的目录。然后在该目录下找到名为”.vscode”的文件夹,然后打开该文件夹下的settings.json。
尝试启动Django服务器
在进入pipenv的shell状态后,移动到刚才创建的Django项目的目录下,并通过运行ls命令确认是否存在manage.py文件。
在初次运行服务器之前,需要对manage.py进行迁移。请执行以下命令对manage.py进行迁移。
$ python manage.py migrate
请启动Django服务器。请执行下方的命令。
$ python manage.py runserver
请在浏览器中访问http://127.0.0.1:8000/(本地主机的8000端口),如果显示了火箭动画,则说明服务器启动成功。
创建Django应用程序
要编写和运行Django代码,需要创建一个Django应用程序。目录结构如下所示。
-
- pipenvの仮想環境のディレクトリ(pipfileが格納されている)
Djangoのプロジェクトのディレクトリ
Djangoのアプリのディレクトリ
要创建Django应用程序,在pipenv的Shell中进入manage.py所在的目录(Django项目的目录),并执行以下命令。
$ python manage.py startapp [アプリ名]
我自己创建了一个名为”hello”的应用。当在Django项目的目录下执行ls命令时,会创建一个以我创建的应用名命名的目录。
创建示例代码
我将创建一个代码,在浏览器上显示”Hello! Python & Django”。
使用VSCode打开Django项目的目录,目录下有一个名为应用名称(在这里是Hello)的文件夹,打开它。然后,在文件夹下找到一个名为views.py的Python文件,我们在那里编写示例代码。
顺便提一下,我认为还有一个名为 models.py 的文件也存在。这些文件是在创建Django应用程序时自动生成的文件。从一开始,文件就会按照所谓的MVC模型的要求生成。 view.py 是用于编写界面显示相关处理的文件。
我编辑了views.py,并写了下面的示例代码。
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def index(request):
return HttpResponse("Hello! Python & Django!")
如果从浏览器访问(请求)views.py文件中的index函数时,这个程序会以HTTP的形式将字符串”Hello! Python & Django!”返回给浏览器。
现在,我们将在浏览器或其他浏览器上设置访问”hello”应用程序的views.py文件的配置。具体来说,我们将试用过的Django服务器的URL:http://127.0.0.1:8000/hello 添加到views.py文件中,以便可以通过该URL发送请求。
首先,打开项目名称的目录下的urls.py文件,
添加代码from django.urls import path,include和path(‘hello/’, include(‘hello.urls’))。
以下是追加后的urls.py。
from django.contrib import admin
from django.urls import path,include
urlpatterns = [
path('admin/', admin.site.urls),
path('hello/', include('hello.urls'))
]
如果从浏览器等发送的请求的URL中指定了hello,那么就要查看hello文件夹下的urls.py文件的设置。当服务器接收到请求的URL时,首先查看的是项目名称目录下的urls.py文件,所以要进行这样的设置。
然而,在hello文件夹中并没有urls.py文件。因此,您需要在Hello应用程序的目录下自己创建一个名为urls.py的文件,并写入以下代码。
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
这段代码是在hello文件夹的urls.py中设置,当有请求进来时,将请求传递给名为index的函数。
当在http://127.0.0.1:8000/hello发出请求时,请求将通过这些设置传递给hello文件夹中的views.py。每个层级的urls.py就像提供导航指引一样。
确认行动
将已编辑的程序保存,并在服务器上运行。
在 pipenv 的 shell 中进入 manage.py 所在的目录,并执行命令 $ python manage.py runserver 来启动服务器。
确定服务器已经启动后,在浏览器中访问http://127.0.0.1:8000/hello/。
如果显示“Hello! Python & Django!”,则表示成功。
下一次,我将尝试使用Django来实现一个简单的webAPI。