尝试使用Python的Django框架

首先

這篇文章是2018年網絡小組附應活動曆的第24天文章。
昨天是@kalzit先生的「嘗試使用IntelliJ的AWS工具包來開發Lambda流程」。

简述

因为想尝试使用Python的Django框架,所以我打算试着总结一下从各种安装开始到应用开发的设置等。

环境

    • Windows 10

 

    • Python 3.7.1

 

    Django 2.1.3

环境准备

安装Python

进行Python的下载和安装。

python3-7-1-install.png

点击“Install Now”之前,请勾选“将Python 3.7添加到PATH”,这样可以省去单独设置环境变量路径的必要。

安装virtualenv

安装一个用于创建Python虚拟环境的工具。
您将能够构建一个固定Python版本和所使用包的虚拟环境。

C:\Users\username> pip install virtualenv

Django安装

这次,我们将在虚拟环境中进行安装。
因此,首先使用以下命令创建虚拟环境。

C:\Users\username\workspace> virtualenv env-test

※工作目录可以放在任何地方。

由于已经成功建立了名为env-test的虚拟环境,现在我要进入该虚拟环境。

C:\Users\username\workspace> cd env-test
C:\Users\username\workspace\env-test> Scripts\activate
(env-test) C:\Users\username\workspace\env-test>

当您进入虚拟环境时,将会显示创建的虚拟环境名称,例如(env-test)。

既经进入虚拟环境,接下来要安装Django。

(env-test) C:\Users\username\workspace\env-test> pip install django==2.1.3

在上述的执行中

Successfully installed Django-2.1.3 pytz-2018.7

如果出现类似的提示,那就是成功了。

创建一个Django项目

在进入虚拟环境的状态下,我们可以移动到任意目录来创建项目。
移动到目录后,可以使用startproject命令来创建项目。

(env-test) C:\Users\username\workspace\env-test> cd C:\Users\username\django
(env-test) C:\Users\username\django> django-admin.py startproject django_test

执行上述操作后,将在名为django_test的文件夹中创建以下目录结构。

init-django-project.png

用这个基础,实际上我们会进行Web应用的设置和开发。
首先,我们将尝试确认是否可以在本地运行。
请进入创建的django_test文件夹并运行runserver命令。

(env-test) C:\Users\username\django> cd django_test
(env-test) C:\Users\username\django\django_test> python manage.py runserver

如果在执行上述命令之后,在浏览器中确认并显示如下内容,那么暂时可以认为是成功的。

django-runserver.png

如果您想指定端口,请按以下方式执行。

(env-test) C:\Users\username\django\django_test> python manage.py runserver 8080

使用Django进行Web应用开发

在之前的工作中,我们已经完成了从安装Python到在虚拟环境中安装Django框架以及在新项目中通过本地服务器进行执行确认的任务。

我們接下來將嘗試實際進行簡單的應用程式設定和畫面轉換等實現。

时区和数据库的设置

基本配置已在settings.py中进行了记录。
将时区更改为日本时区。

# Internationalization
# https://docs.djangoproject.com/en/2.1/topics/i18n/

LANGUAGE_CODE = 'ja'

TIME_ZONE = 'Asia/Tokyo'

在设置时区后,您可以在浏览器上进行确认,可以确认已切换为日语设置。

django-runserver-ja.png

在使用Django进行开发时,默认的配置是使用SQlite3数据库。这次我打算使用SQlite3来进行开发试试看。

# Database
# https://docs.djangoproject.com/en/2.1/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

由于使用SQLite3,无需进行任何配置更改即可执行迁移。

(env-test) C:\Users\username\django\django_test> python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying admin.0003_logentry_add_action_flag_choices... 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 auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying sessions.0001_initial... OK

如果您看到上述的消息,那么就表示成功了。

Django的管理界面

然后,我们将创建一个超级用户来访问Django的管理界面。可以使用createsuperuser指令来创建。

(env-test) C:\Users\username\django\django_test>python manage.py createsuperuser
ユーザー名 (leave blank to use 'username'): admin
メールアドレス: django-test@test.co.jp
Password:
Password (again):
Superuser created successfully.

邮件地址可以是任意的,没有问题。

我将使用实际创建的帐户登录到管理界面。在Django中,默认情况下,访问/admin即可进入管理界面。

django-admin-top.png

请使用之前创建的超级用户登录。

django-admin-login-before.png
django-admin-login-after.png

您可以通过管理画面进行用户添加、表操作等操作。

创建和配置应用程序

在之前的工作中,我们已经确认了能够创建项目并访问管理界面。
我们计划在这个项目中构建一个应用程序。

如果要创建一个应用程序,你可以使用以下命令进行创建。

(env-test) C:\Users\username\django\django_test>python manage.py startapp test_app

执行上述操作后,将创建一个应用程序的模板目录。
这次我尝试创建了一个名为test_app的应用程序。

我将从编写处理代码并验证应用程序的功能开始。

↓ 测试应用/视图.py

from django.http import HttpResponse

def index(request):
    return HttpResponse("動作確認です")

在完成视图的描述之后,我们要设置端点。
我们将在本次创建的test_app目录下新建一个urls.py文件。

↓test_app/urls.py的内容需要在中文中进行本地化。

from django.urls import path
from . import views

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

同时,我们也要对位于根目录下的urls.py进行修正。

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

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

如果使用上述设置,对于本地情况,只需要连接到 http://localhost:8000/test_app/,页面上显示”动作确认”字样即可。

因为确认了动作,所以我将把views分成GET和POST两部分来编写。
我会参考类基础通用视图来创建。
为了按照画面单位分割views.py,我会创建views目录。

这次我们将原本存在的test_app/views.py文件重命名并移动到test1_views.py,然后开始使用。

from django.http import HttpResponse
from django.views.generic import View   # 一般的なViewを使用してみる

class test1_views(View):
    def get(self, request):
        return HttpResponse("動作確認です!GET!")

    def post(self, request):
        return HttpResponse("動作確認です!POST!")

通过将基于类的通用视图替换,需要在urls.py中进行修改。
我们将修改test_app文件夹下的urls.py文件。根目录的urls.py文件保持不变。
我们将在导入部分引入我们新创建的test1_views,并将其用于路径设置。

from django.urls import path
from test_app.views.test1_views import test1_views

urlpatterns = [
    path('test1_views.html', test1_views.as_view(), name='test1_views'),
]

使用上述配置,在本地情况下,可以连接到http://localhost:8000/test_app/test1_views.html。

如果使用这个模板,可以在views目录中创建新文件,以便按屏幕单元逐步增加易于理解的端点。

接下来,我们将谈谈模板。
在test1_app的直接子目录下创建一个名为templates的文件夹,并在其中创建test1_views.html。
为了仅进行操作确认,省略了meta标签等。

<!DOCTYPE html>
<html lang="ja">

<head>
    <title>test1</title>
</head>

<body>
    <div>
        <h1>テンプレートの表示確認!</h1>
    </div>
</body>

</html>

设置静态文件的路径。

TEST_APP_STATIC_DIR = os.path.join(BASE_DIR, 'test_app/templates')

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [TEST_APP_STATIC_DIR],
        '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',
            ],
        },
    },
]

最后,修改视图,将其引用先前创建的HTML文件。

class test1_views(View):
    def get(self, request):
        # GETの処理を変更してみる
        return render(request, 'test1_views.html')

现在通过GET发送即可进行渲染。

最后

我使用Python的Django框架进行了Web应用程序开发的设置。我考虑了实际的目录结构等,希望能够创建一个易于开发的骨架,并用于应用程序开发。

明天的文章是由 @ytakadama0922 先生提供的。请多多关照。

我们在 Web Crew 公司随时欢迎一起工作的人。请随意报名。

招聘开发工程师
招聘前端工程师

广告
将在 10 秒后关闭
bannerAds