看了网站后尝试使用Django2,但对于无法成功的人来说
首先
在这个网站上学习了Django的引入后,我总结了自己在我的环境中遇到的两个问题,希望能够让初学者更容易理解Python的Web应用程序(Django)。
开发环境
操作系统:macOS High Sierra(10.13)
$ python3 -V
Python 3.6.5 :: Anaconda, Inc.
django.get_version()
'2.1.1'
创建模型
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
据称,在Django2之后会出现以下错误。
TypeError: __init__() missing 1 required positional argument: 'on_delete'
所以,让我们进行以下修改。
我们添加了on_delete。
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
路由设置
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')),
]
如果什么都不做,就会被告知找不到模板等类似的消息。
TemplateDoesNotExist at /
那么,我们就这样改写一下。
将admin的url更改为path。
这样,它可以正确找到模板。
from django.conf.urls import include, url
from django.contrib import admin
from django.urls import path
urlpatterns = [
path('admin/', admin.site.urls),
url(r'', include('blog.urls')),
]