Django Girls教程的升级:从Django 1.11升级至2.0的变更点

経緯 – 这件事的经过

完成 Django Girls Tutorial 并将其存储在Github上管理时,收到了警告信息。

ebichiki,

我们在一个你被授权安全警报访问的存储库中发现了一个潜在的安全漏洞。

ebichiki/djangogirls
已检测到在django >= 1.11.0, < 1.11.15中定义的已知中等严重性安全漏洞。建议更新requirements.txt:django ~> 1.11.15。

根据发现的脆弱性情况,Django版本似乎较旧。
因此进行了升级,参考了新的教程。
旧链接地址:https://djangogirlsjapan.gitbooks.io/workshop_tutorialjp/content/
新链接地址:https://tutorial.djangogirls.org/ja/

Django 1.11 → 2.0的变更点

外键约束的描述

当其所参照之对象被删除时,可设定与之关联对象的行为。在教程中,设置为on_delete=models.CASCADE即一同删除。

Django 1.11 就是初始版本

from django.db import models
from django.utils import timezone

class Post(models.Model):
    author = models.ForeignKey('auth.User')
    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

Django 2.0:只需要一个中文选项

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

设置URL链接

可以通过Path函数来指定。由于不使用正则表达式,因此可以更简便地进行描述。

Django 1.11是一个选项。

from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'', include('blog.urls')),
]

Django 2.0:只需要一种选项,用中文进行同义复述

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

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('blog.urls')),
]
广告
将在 10 秒后关闭
bannerAds