【注意事项】解决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

广告
将在 10 秒后关闭
bannerAds