【注意事项】解决Django Girls教程中的错误方法
Django女孩教程
在进行教程时,遇到了几个错误,现在让我简单写一下解决办法。
请注意,环境是Python3.7.3和Django 2.2。
・Django Girls教程
https://djangogirlsjapan.gitbook.io/workshop_tutorialjp/
让我们创建一个项目吧!
在将应用部署至Heroku时,执行git push heroku master会出现错误。
教程中建议使用pip install django==1.11进行安装,然而这并不是最新版本,我们应该安装如下最新版本。
$ pip install --upgrade setuptools
$ pip install --upgrade pip
$ pip install django
请参考以下链接:
https://teratail.com/questions/139826
https://qiita.com/snowman_mh/items/c3f9f6500a01a267fea6
Django模型
在创建博客文章模型时,将在blog/models.py中添加Django2.0中所需的on_delete参数。本次我们选择了on_delete=models.CASCADE。
from django.db import models
from django.utils import timezone
class Post(models.Model):
author = models.ForeignKey('auth.User', on_delete=models.CASCADE)
title = models.CharField(max_length=200)
text = models.TextField()
created_date = models.DateTimeField(
default=timezone.now)
published_date = models.DateTimeField(
blank=True, null=True)
def publish(self):
self.published_date = timezone.now()
self.save()
def __str__(self):
return self.title
请参考以下资源:
https://qiita.com/ebichiki/items/387579242a17bb2902ca
根据您的兴趣,关于on_delete有多种选项可供参考。您可以访问此链接了解更多信息:https://www.djangobrothers.com/blogs/on_delete/
Django的安装
需在requirement.txt文件的最后添加psycopg2==2.5.4,但由于该版本不是最新的,因此需要更新如下并修改requirement.txt。
$ pip install --upgrade psycopg2
$ pip freeze > requirements.txt
只要满足下述更改,requirement.txt就没问题了。
dj-database-url==0.5.0
Django==2.2
gunicorn==19.9.0
pytz==2019.1
sqlparse==0.3.0
whitenoise==4.1.2
psycopg2==2.8.2
您可以参考以下链接获取更多信息:https://qiita.com/mimizuk/items/5a6f2ea4136b797b9924
部署
在runtime.txt中写入Python的版本,但是按照教程使用python-3.5.2会导致错误。
以下是当前正在使用的版本,版本号为python-3.7.3。
白噪音
在部署时添加下方代码,请您不需要添加这段代码,无需担心。
from whitenoise.django import DjangoWhiteNoise
application = DjangoWhiteNoise(application)
如果是以下这样的话,就没有问题。
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings')
application = get_wsgi_application()
参考:
请参考以下链接:
让我们扩展模板。
如果不升级 Django 并继续进行下去的话,我认为即使点击帖子标题,各个帖子也不会显示出来,这种情况下需要修改 blog/urls.py 文件。
改变前
from django.conf.urls import include, url
from . import views
from django.urls import path
urlpatterns = [
url(r'^$', views.post_list),
url(r'^post/(?P<pk>[0-9]+)/$', views.post_detail),
url(r'^post/new/$', views.post_new, name='post_new'),
url(r'^post/(?P<pk>[0-9]+)/edit/$', views.post_edit, name='post_edit'),
]
修改后
from django.urls import path
from . import views
urlpatterns = [
path('', views.post_list, name='post_list'),
path('post/<int:pk>/', views.post_detail, name='post_detail'),
path('post/new/', views.post_new, name='post_new'),
path('post/<int:pk>/edit/', views.post_edit, name='post_edit'),
]
请参阅以下链接:
https://qiita.com/massa142/items/15c130169d3bfc4a9996
https://qiita.com/shin_coding_1989/items/c93eef408cafb45dfc44
其他 tā)
如果要部署到Heroku,请确保检查支持的版本,以确保顺利,可从下方链接确认。
・Heroku 支持的运行时
https://devcenter.heroku.com/articles/python-support#supported-runtimes
(Heroku Supported Runtime
https://devcenter.heroku.com/articles/python-support#supported-runtimes)
最后,我找到了一篇最新的教程文章供参考。
http://mmtomitomimm.blogspot.com/2019/01/django-girls.html