尝试使用Python的Django框架
首先
這篇文章是2018年網絡小組附應活動曆的第24天文章。
昨天是@kalzit先生的「嘗試使用IntelliJ的AWS工具包來開發Lambda流程」。
简述
因为想尝试使用Python的Django框架,所以我打算试着总结一下从各种安装开始到应用开发的设置等。
环境
-
- Windows 10
-
- Python 3.7.1
- Django 2.1.3
环境准备
安装Python
进行Python的下载和安装。
点击“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的文件夹中创建以下目录结构。
用这个基础,实际上我们会进行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
如果在执行上述命令之后,在浏览器中确认并显示如下内容,那么暂时可以认为是成功的。
如果您想指定端口,请按以下方式执行。
(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进行开发时,默认的配置是使用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即可进入管理界面。
请使用之前创建的超级用户登录。
您可以通过管理画面进行用户添加、表操作等操作。
创建和配置应用程序
在之前的工作中,我们已经确认了能够创建项目并访问管理界面。
我们计划在这个项目中构建一个应用程序。
如果要创建一个应用程序,你可以使用以下命令进行创建。
(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 公司随时欢迎一起工作的人。请随意报名。
招聘开发工程师
招聘前端工程师