Django 新手在这里。我的视图函数无法导入PostForm class
。所有三个 py 文件都是同级文件。不过,模型中的Post class
已成功导入。
你能帮忙吗?
错误信息:
File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
File "/home/ubuntu/workspace/django_projects/urls.py", line 1, in <module>
import blog_app.blog_urls
File "/home/ubuntu/workspace/blog_app/blog_urls.py", line 2, in <module>
from . import views
File "/home/ubuntu/workspace/blog_app/views.py", line 8, in <module>
from .forms import PostForm
ImportError: cannot import name PostForm
views.py:
from __future__ import unicode_literals
from django.shortcuts import render, get_object_or_404
from .models import Post
from .forms import PostForm
def post_new(request):
form = PostForm()
return render(request, 'blog_app/post_edit.html', {'form': form})
forms.py:
from django import forms
from .models import Post
class PostForm(forms.ModelForm):
class Meta:
model = Post
fields = ('title', 'text',)
models.py:
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()
def __str__(self):
return self.title
使用应用程序名称而不是.forms
导入views.py
from __future__ import unicode_literals
from django.shortcuts import render, get_object_or_404
from .models import Post
from <you_app_name>.forms import PostForm
def post_new(request):
form = PostForm()
return render(request, 'blog_app/post_edit.html', {'form': form})
问题已解决:
我不得不对文件结构进行一些修改。因此创建了一个forms
包并向其中添加了一个__init__.py
模块。然后将forms.py
模块重命名为post_forms.py
并将其移动到forms
包中。现在,当我像from blog_app.forms.post_forms import PostForm
一样导入PostForm
类时,它可以工作。显然,重命名forms.py
在这里无关紧要,但我这样做是为了使文件更有条理,以防将来为其他模型添加表单。