Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django ImportError:无法导入名称注释_Python_Django_Import - Fatal编程技术网

Python Django ImportError:无法导入名称注释

Python Django ImportError:无法导入名称注释,python,django,import,Python,Django,Import,我是Django的新手,目前正在学习一本书《Django的榜样安东尼奥·梅勒》。这是一个博客项目。尝试扩展博客帖子应用程序以添加评论时。我收到一个错误。我无法导入在项目中创建的模型,其中包含以下模型、视图、表单和回溯 forms.py from django import forms from django.db import models from blog.models import Comment class EmailPostForm(forms.Form): name = f

我是Django的新手,目前正在学习一本书《Django的榜样安东尼奥·梅勒》。这是一个博客项目。尝试扩展博客帖子应用程序以添加评论时。我收到一个错误。我无法导入在项目中创建的模型,其中包含以下模型、视图、表单和回溯

forms.py

from django import forms
from django.db import models
from blog.models import Comment

class EmailPostForm(forms.Form):
    name = forms.CharField(max_length=25)
    email = forms.EmailField()
    to = forms.EmailField()
    comments = forms.CharField(required=False, widget=forms.Textarea)

class CommentForm(forms.ModelForm):
    class Meta:
        model = Comment
        fields = ('name', 'email', 'body')
from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User
from django.core.urlresolvers import reverse
from .forms import EmailPostForm, CommentForm

# Create your models here.
class PublishedManager(models.Manager):
    def get_queryset(self):
        return super(PublishedManager, self).get_queryset().filter(status='published')



class Post(models.Model):
    STATUS_CHOICES = (
            ('draft', 'Draft'),
            ('published', 'Published'),
            )
    title = models.CharField(max_length=250)
    slug = models.SlugField(max_length=250, unique_for_date="publish")
    author = models.ForeignKey(User, related_name='blog_posts')
    body = models.TextField()
    publish = models.DateTimeField(default=timezone.now)
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)
    status = models.CharField(max_length=10, choices=STATUS_CHOICES, default="draft")

    objects = models.Manager()
    published = PublishedManager()


    class Meta:
        ordering = ('-publish', )

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('blog:post_detail', args=[self.publish.year, 
            self.publish.strftime('%m'),
            self.publish.strftime('%d'),
            self.slug])


class Comment(models.Model):
    post = models.ForeignKey(Post, related_name='comments')
    name = models.CharField(max_length=80)
    email = models.EmailField()
    body = models.TextField()
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)
    active = models.BooleanField(default=True)

    class Meta:
        ordering = ('created',)

    def __str__(self):
        return "Comment by {} on {}".format(self.name, self.post)
from django.shortcuts import render , get_object_or_404
from blog.models import Post, Comment
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.views.generic import ListView
from django.core.mail import send_mail
from blog.forms import CommentForm, EmailPostForm

class PostListView(ListView):
    queryset = Post.published.all()
    context_object_name = 'posts'
    paginate_by = 3
    template_name = 'list.html'


# Create your views here.


def post_list(request):
    posts = Post.objects.all()
    object_list = Post.published.all()
    paginator = Paginator(object_list,3)
    page = request.GET.get('page')
    try:
        posts = paginator.page('page')
    except PageNotAnInteger:
        posts = paginator.page(1)
    except EmptyPage:
        posts = paginator.page(paginator.num_pages)


    return render(request, 'list.html', {'posts': posts,
                                         'page':page})



def post_detail(request, year, month, day, post):


    post = get_object_or_404(Post, slug=post,
                                   status='published',
                                   publish__year=year,
                                   publish__month=month,
                                   publish__day=day)
    #list of active comments for this post
    comments = post.comments.filter(active=True)

    if request.method == 'POST':
        # A comment was posted
        comment_form = CommentForm(data=request.POST)
        if comment_form.is_valid():
            #create comment object but don't save to DB
            new_comment = comment_form.save(commit=False)
            # assitgn comment to post
            new_comment.post = post
            # save the comment to the DB
            new_comment.save()

    else:
        comment_form =CommentForm()

    args = {}
    args.update(csrf(request))
    args['post'] = post 
    args['comment_form']= comment_form
    args['comments'] = comments 



    return render(request, 'detail.html', args )




def post_share(request,post_id):
    # retrieve post by id
    post = get_object_or_404(Post, id=post_id, status='published')
    sent = False

    if request.method == 'POST':
        # form was submitted
        form = EmailPostForm(request.POST)
        if form.is_valid():
            # Forms fields passed validation#
            cd = form.cleaned_data


        post_url = request.build_absolute_uri(post.get_absolute_url())
        subject = '{} recommends you read "{}"'.format(cd['name'],post.title)
        message = 'Read "{}" at {}\n\n{}\'s comments: {}'.format(post.title,post_url,cd['name'],cd['comments'])

        send_mail(subject,message,'eugenesleator17@gmail.com',[cd['to']])




        sent=True
    else:

        form = EmailPostForm()

    return render(request, 'share.html',{'post':post,
                                        'form': form,
                                        'sent': sent})

        return "Comment by {} on {}".format(self.name, self.post)
型号.py

from django import forms
from django.db import models
from blog.models import Comment

class EmailPostForm(forms.Form):
    name = forms.CharField(max_length=25)
    email = forms.EmailField()
    to = forms.EmailField()
    comments = forms.CharField(required=False, widget=forms.Textarea)

class CommentForm(forms.ModelForm):
    class Meta:
        model = Comment
        fields = ('name', 'email', 'body')
from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User
from django.core.urlresolvers import reverse
from .forms import EmailPostForm, CommentForm

# Create your models here.
class PublishedManager(models.Manager):
    def get_queryset(self):
        return super(PublishedManager, self).get_queryset().filter(status='published')



class Post(models.Model):
    STATUS_CHOICES = (
            ('draft', 'Draft'),
            ('published', 'Published'),
            )
    title = models.CharField(max_length=250)
    slug = models.SlugField(max_length=250, unique_for_date="publish")
    author = models.ForeignKey(User, related_name='blog_posts')
    body = models.TextField()
    publish = models.DateTimeField(default=timezone.now)
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)
    status = models.CharField(max_length=10, choices=STATUS_CHOICES, default="draft")

    objects = models.Manager()
    published = PublishedManager()


    class Meta:
        ordering = ('-publish', )

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('blog:post_detail', args=[self.publish.year, 
            self.publish.strftime('%m'),
            self.publish.strftime('%d'),
            self.slug])


class Comment(models.Model):
    post = models.ForeignKey(Post, related_name='comments')
    name = models.CharField(max_length=80)
    email = models.EmailField()
    body = models.TextField()
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)
    active = models.BooleanField(default=True)

    class Meta:
        ordering = ('created',)

    def __str__(self):
        return "Comment by {} on {}".format(self.name, self.post)
from django.shortcuts import render , get_object_or_404
from blog.models import Post, Comment
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.views.generic import ListView
from django.core.mail import send_mail
from blog.forms import CommentForm, EmailPostForm

class PostListView(ListView):
    queryset = Post.published.all()
    context_object_name = 'posts'
    paginate_by = 3
    template_name = 'list.html'


# Create your views here.


def post_list(request):
    posts = Post.objects.all()
    object_list = Post.published.all()
    paginator = Paginator(object_list,3)
    page = request.GET.get('page')
    try:
        posts = paginator.page('page')
    except PageNotAnInteger:
        posts = paginator.page(1)
    except EmptyPage:
        posts = paginator.page(paginator.num_pages)


    return render(request, 'list.html', {'posts': posts,
                                         'page':page})



def post_detail(request, year, month, day, post):


    post = get_object_or_404(Post, slug=post,
                                   status='published',
                                   publish__year=year,
                                   publish__month=month,
                                   publish__day=day)
    #list of active comments for this post
    comments = post.comments.filter(active=True)

    if request.method == 'POST':
        # A comment was posted
        comment_form = CommentForm(data=request.POST)
        if comment_form.is_valid():
            #create comment object but don't save to DB
            new_comment = comment_form.save(commit=False)
            # assitgn comment to post
            new_comment.post = post
            # save the comment to the DB
            new_comment.save()

    else:
        comment_form =CommentForm()

    args = {}
    args.update(csrf(request))
    args['post'] = post 
    args['comment_form']= comment_form
    args['comments'] = comments 



    return render(request, 'detail.html', args )




def post_share(request,post_id):
    # retrieve post by id
    post = get_object_or_404(Post, id=post_id, status='published')
    sent = False

    if request.method == 'POST':
        # form was submitted
        form = EmailPostForm(request.POST)
        if form.is_valid():
            # Forms fields passed validation#
            cd = form.cleaned_data


        post_url = request.build_absolute_uri(post.get_absolute_url())
        subject = '{} recommends you read "{}"'.format(cd['name'],post.title)
        message = 'Read "{}" at {}\n\n{}\'s comments: {}'.format(post.title,post_url,cd['name'],cd['comments'])

        send_mail(subject,message,'eugenesleator17@gmail.com',[cd['to']])




        sent=True
    else:

        form = EmailPostForm()

    return render(request, 'share.html',{'post':post,
                                        'form': form,
                                        'sent': sent})

        return "Comment by {} on {}".format(self.name, self.post)
视图.py

from django import forms
from django.db import models
from blog.models import Comment

class EmailPostForm(forms.Form):
    name = forms.CharField(max_length=25)
    email = forms.EmailField()
    to = forms.EmailField()
    comments = forms.CharField(required=False, widget=forms.Textarea)

class CommentForm(forms.ModelForm):
    class Meta:
        model = Comment
        fields = ('name', 'email', 'body')
from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User
from django.core.urlresolvers import reverse
from .forms import EmailPostForm, CommentForm

# Create your models here.
class PublishedManager(models.Manager):
    def get_queryset(self):
        return super(PublishedManager, self).get_queryset().filter(status='published')



class Post(models.Model):
    STATUS_CHOICES = (
            ('draft', 'Draft'),
            ('published', 'Published'),
            )
    title = models.CharField(max_length=250)
    slug = models.SlugField(max_length=250, unique_for_date="publish")
    author = models.ForeignKey(User, related_name='blog_posts')
    body = models.TextField()
    publish = models.DateTimeField(default=timezone.now)
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)
    status = models.CharField(max_length=10, choices=STATUS_CHOICES, default="draft")

    objects = models.Manager()
    published = PublishedManager()


    class Meta:
        ordering = ('-publish', )

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('blog:post_detail', args=[self.publish.year, 
            self.publish.strftime('%m'),
            self.publish.strftime('%d'),
            self.slug])


class Comment(models.Model):
    post = models.ForeignKey(Post, related_name='comments')
    name = models.CharField(max_length=80)
    email = models.EmailField()
    body = models.TextField()
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)
    active = models.BooleanField(default=True)

    class Meta:
        ordering = ('created',)

    def __str__(self):
        return "Comment by {} on {}".format(self.name, self.post)
from django.shortcuts import render , get_object_or_404
from blog.models import Post, Comment
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.views.generic import ListView
from django.core.mail import send_mail
from blog.forms import CommentForm, EmailPostForm

class PostListView(ListView):
    queryset = Post.published.all()
    context_object_name = 'posts'
    paginate_by = 3
    template_name = 'list.html'


# Create your views here.


def post_list(request):
    posts = Post.objects.all()
    object_list = Post.published.all()
    paginator = Paginator(object_list,3)
    page = request.GET.get('page')
    try:
        posts = paginator.page('page')
    except PageNotAnInteger:
        posts = paginator.page(1)
    except EmptyPage:
        posts = paginator.page(paginator.num_pages)


    return render(request, 'list.html', {'posts': posts,
                                         'page':page})



def post_detail(request, year, month, day, post):


    post = get_object_or_404(Post, slug=post,
                                   status='published',
                                   publish__year=year,
                                   publish__month=month,
                                   publish__day=day)
    #list of active comments for this post
    comments = post.comments.filter(active=True)

    if request.method == 'POST':
        # A comment was posted
        comment_form = CommentForm(data=request.POST)
        if comment_form.is_valid():
            #create comment object but don't save to DB
            new_comment = comment_form.save(commit=False)
            # assitgn comment to post
            new_comment.post = post
            # save the comment to the DB
            new_comment.save()

    else:
        comment_form =CommentForm()

    args = {}
    args.update(csrf(request))
    args['post'] = post 
    args['comment_form']= comment_form
    args['comments'] = comments 



    return render(request, 'detail.html', args )




def post_share(request,post_id):
    # retrieve post by id
    post = get_object_or_404(Post, id=post_id, status='published')
    sent = False

    if request.method == 'POST':
        # form was submitted
        form = EmailPostForm(request.POST)
        if form.is_valid():
            # Forms fields passed validation#
            cd = form.cleaned_data


        post_url = request.build_absolute_uri(post.get_absolute_url())
        subject = '{} recommends you read "{}"'.format(cd['name'],post.title)
        message = 'Read "{}" at {}\n\n{}\'s comments: {}'.format(post.title,post_url,cd['name'],cd['comments'])

        send_mail(subject,message,'eugenesleator17@gmail.com',[cd['to']])




        sent=True
    else:

        form = EmailPostForm()

    return render(request, 'share.html',{'post':post,
                                        'form': form,
                                        'sent': sent})

        return "Comment by {} on {}".format(self.name, self.post)
回溯

(MySiteVirtualEnv) root@kali:~/MySite/MySiteVirtualEnv/mysite# python manage.py makemigrations
Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/root/MySite/MySiteVirtualEnv/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 353, in execute_from_command_line
    utility.execute()
  File "/root/MySite/MySiteVirtualEnv/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 327, in execute
    django.setup()
  File "/root/MySite/MySiteVirtualEnv/local/lib/python2.7/site-packages/django/__init__.py", line 18, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/root/MySite/MySiteVirtualEnv/local/lib/python2.7/site-packages/django/apps/registry.py", line 108, in populate
    app_config.import_models(all_models)
  File "/root/MySite/MySiteVirtualEnv/local/lib/python2.7/site-packages/django/apps/config.py", line 202, in import_models
    self.models_module = import_module(models_module_name)
  File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/root/MySite/MySiteVirtualEnv/mysite/blog/models.py", line 5, in <module>
    from .forms import EmailPostForm, CommentForm
  File "/root/MySite/MySiteVirtualEnv/mysite/blog/forms.py", line 3, in <module>
    from blog.models import Comment
ImportError: cannot import name Comment
(MySiteVirtualEnv)root@kali:~/MySite/MySiteVirtualEnv/MySite#python manage.py makemigrations
回溯(最近一次呼叫最后一次):
文件“manage.py”,第10行,在
从命令行(sys.argv)执行命令
文件“/root/MySite/MySiteVirtualEnv/local/lib/python2.7/site packages/django/core/management/_init__.py”,第353行,从命令行执行
utility.execute()
文件“/root/MySite/MySiteVirtualEnv/local/lib/python2.7/site packages/django/core/management/_init__.py”,执行中第327行
django.setup()
文件“/root/MySite/MySiteVirtualEnv/local/lib/python2.7/site packages/django/_init__.py”,第18行,在安装程序中
应用程序。填充(设置。已安装的应用程序)
文件“/root/MySite/MySiteVirtualEnv/local/lib/python2.7/site packages/django/apps/registry.py”,第108行,填充
app_config.import_models(所有_models)
文件“/root/MySite/MySiteVirtualEnv/local/lib/python2.7/site packages/django/apps/config.py”,第202行,在import\u模型中
self.models\u module=导入模块(models\u module\u name)
文件“/usr/lib/python2.7/importlib/_init_uuu.py”,第37行,在导入模块中
__导入(名称)
文件“/root/MySite/MySiteVirtualEnv/MySite/blog/models.py”,第5行,在
从.forms导入EmailPostForm、CommentForm
文件“/root/MySite/MySiteVirtualEnv/MySite/blog/forms.py”,第3行,在
从blog.models导入注释
ImportError:无法导入名称注释

您正在尝试执行循环(循环)导入。从
models.py中删除以下行:

from .forms import EmailPostForm, CommentForm

您正在尝试执行循环(循环)导入。从
models.py中删除以下行:

from .forms import EmailPostForm, CommentForm

非常感谢您看到了之前的帖子“Python循环导入”,但仍然无法掌握理论或到底要更改什么:-)。。。。现在所有的工作都在进行中…非常感谢您看到了之前的帖子“Python循环导入”?但仍然无法掌握理论或到底要更改什么:-)。。。。现在都在工作。。。