无法将窗体类导入视图



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在这里无关紧要,但我这样做是为了使文件更有条理,以防将来为其他模型添加表单。

最新更新