Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.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中创建一个函数来为我的评论添加评论_Python_Django_Python 3.6 - Fatal编程技术网

Python 我如何在django中创建一个函数来为我的评论添加评论

Python 我如何在django中创建一个函数来为我的评论添加评论,python,django,python-3.6,Python,Django,Python 3.6,我在Django上建立了一个网站,用户可以留下评论,我试着这样做,以便他们可以添加评论,但是他们添加了评论,它只是将其保存到数据库中,而不是添加到帖子中。如果有人知道我可以如何修改代码,这样它就可以将评论添加到他们留言的评论中,而不是完全不出现在网站上 视图。py: from django.shortcuts import render, redirect #Render is used to show the HTML, and redirect is used when the us

我在Django上建立了一个网站,用户可以留下评论,我试着这样做,以便他们可以添加评论,但是他们添加了评论,它只是将其保存到数据库中,而不是添加到帖子中。如果有人知道我可以如何修改代码,这样它就可以将评论添加到他们留言的评论中,而不是完全不出现在网站上

视图。py:

    from django.shortcuts import render, redirect #Render is used to show the HTML, and redirect is used when the user needs to be sent to a different page automatically.
        from .models import Review #This imports the Review database.
        from .forms import ReviewForm, CommentForm #This imports the comments and review form.
        from django.utils import timezone 
        from django.contrib.auth.decorators import login_required #This requires the user to be logged in.

        def review(request):
            return render(request, 'review/review.html') 

        @login_required(login_url='/accounts/login/') 
        def review_new(request): 
            if request.method == "POST":
                form = ReviewForm(request.POST) 
                if form.is_valid(): 
                    post = form.save(commit=False) 
                    post.date = timezone.now() 
                    post.author = request.user 
                    post.save() 
                    return redirect('/review') 
            else: 
                form=ReviewForm() 
            return render(request, 'review/post_edit.html', {'form': form}) 

        def add_comment_to_post(request): 
            if request.method == "POST": 
                form = CommentForm(request.POST) 
                    comment = form.save(commit=False) 
                    comment.Review = review 
                    comment.save() #This will save the comment to the database.
                    return redirect('reivew': review) 
            else:
                form = CommentForm() 
            return render(request, 'review/add_comment_to_post.html', {'form': form}) 
        from django.db import models 
        from django.conf import settings 
        from django.utils import timezone 

        class Review(models.Model): 
            title = models.CharField(max_length=140) 
            body = models.TextField(max_length=3000) 
            date = models.DateTimeField()
            author=models.ForeignKey(settings.AUTH_USER_MODEL, `on_delete=models.CASCADE, null=True)` 

        class comment(models.Model): 
            review = models.ForeignKey('review.Review', on_delete=models.CASCADE, related_name='comments', null=True) 
            author=models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, null=True) 
            text = models.TextField(max_length=3000) 
            created_date = models.DateTimeField(default=timezone.now)

            def __str__(self):
                return self.text
from django.urls import path, include, re_path 
from django.views.generic import ListView, DetailView 
from review.models import Review 
from . import views 

urlpatterns = [ 
    path('', ListView.as_view( 
        queryset=Review.objects.all().order_by("-date")[:25], 
        template_name="review/review.html")),
    re_path('(?P<pk>(\d+))',DetailView.as_view(model=Review, template_name="review/post.html")), 
    path('new/', views.review_new, name='review_new'), 
    path('new/comment', views.add_comment_to_post, name='add_comment_to_post'), 

]
型号。py:

    from django.shortcuts import render, redirect #Render is used to show the HTML, and redirect is used when the user needs to be sent to a different page automatically.
        from .models import Review #This imports the Review database.
        from .forms import ReviewForm, CommentForm #This imports the comments and review form.
        from django.utils import timezone 
        from django.contrib.auth.decorators import login_required #This requires the user to be logged in.

        def review(request):
            return render(request, 'review/review.html') 

        @login_required(login_url='/accounts/login/') 
        def review_new(request): 
            if request.method == "POST":
                form = ReviewForm(request.POST) 
                if form.is_valid(): 
                    post = form.save(commit=False) 
                    post.date = timezone.now() 
                    post.author = request.user 
                    post.save() 
                    return redirect('/review') 
            else: 
                form=ReviewForm() 
            return render(request, 'review/post_edit.html', {'form': form}) 

        def add_comment_to_post(request): 
            if request.method == "POST": 
                form = CommentForm(request.POST) 
                    comment = form.save(commit=False) 
                    comment.Review = review 
                    comment.save() #This will save the comment to the database.
                    return redirect('reivew': review) 
            else:
                form = CommentForm() 
            return render(request, 'review/add_comment_to_post.html', {'form': form}) 
        from django.db import models 
        from django.conf import settings 
        from django.utils import timezone 

        class Review(models.Model): 
            title = models.CharField(max_length=140) 
            body = models.TextField(max_length=3000) 
            date = models.DateTimeField()
            author=models.ForeignKey(settings.AUTH_USER_MODEL, `on_delete=models.CASCADE, null=True)` 

        class comment(models.Model): 
            review = models.ForeignKey('review.Review', on_delete=models.CASCADE, related_name='comments', null=True) 
            author=models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, null=True) 
            text = models.TextField(max_length=3000) 
            created_date = models.DateTimeField(default=timezone.now)

            def __str__(self):
                return self.text
from django.urls import path, include, re_path 
from django.views.generic import ListView, DetailView 
from review.models import Review 
from . import views 

urlpatterns = [ 
    path('', ListView.as_view( 
        queryset=Review.objects.all().order_by("-date")[:25], 
        template_name="review/review.html")),
    re_path('(?P<pk>(\d+))',DetailView.as_view(model=Review, template_name="review/post.html")), 
    path('new/', views.review_new, name='review_new'), 
    path('new/comment', views.add_comment_to_post, name='add_comment_to_post'), 

]
url.py:

    from django.shortcuts import render, redirect #Render is used to show the HTML, and redirect is used when the user needs to be sent to a different page automatically.
        from .models import Review #This imports the Review database.
        from .forms import ReviewForm, CommentForm #This imports the comments and review form.
        from django.utils import timezone 
        from django.contrib.auth.decorators import login_required #This requires the user to be logged in.

        def review(request):
            return render(request, 'review/review.html') 

        @login_required(login_url='/accounts/login/') 
        def review_new(request): 
            if request.method == "POST":
                form = ReviewForm(request.POST) 
                if form.is_valid(): 
                    post = form.save(commit=False) 
                    post.date = timezone.now() 
                    post.author = request.user 
                    post.save() 
                    return redirect('/review') 
            else: 
                form=ReviewForm() 
            return render(request, 'review/post_edit.html', {'form': form}) 

        def add_comment_to_post(request): 
            if request.method == "POST": 
                form = CommentForm(request.POST) 
                    comment = form.save(commit=False) 
                    comment.Review = review 
                    comment.save() #This will save the comment to the database.
                    return redirect('reivew': review) 
            else:
                form = CommentForm() 
            return render(request, 'review/add_comment_to_post.html', {'form': form}) 
        from django.db import models 
        from django.conf import settings 
        from django.utils import timezone 

        class Review(models.Model): 
            title = models.CharField(max_length=140) 
            body = models.TextField(max_length=3000) 
            date = models.DateTimeField()
            author=models.ForeignKey(settings.AUTH_USER_MODEL, `on_delete=models.CASCADE, null=True)` 

        class comment(models.Model): 
            review = models.ForeignKey('review.Review', on_delete=models.CASCADE, related_name='comments', null=True) 
            author=models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, null=True) 
            text = models.TextField(max_length=3000) 
            created_date = models.DateTimeField(default=timezone.now)

            def __str__(self):
                return self.text
from django.urls import path, include, re_path 
from django.views.generic import ListView, DetailView 
from review.models import Review 
from . import views 

urlpatterns = [ 
    path('', ListView.as_view( 
        queryset=Review.objects.all().order_by("-date")[:25], 
        template_name="review/review.html")),
    re_path('(?P<pk>(\d+))',DetailView.as_view(model=Review, template_name="review/post.html")), 
    path('new/', views.review_new, name='review_new'), 
    path('new/comment', views.add_comment_to_post, name='add_comment_to_post'), 

]
从django.url导入路径,包括,重新设置路径
从django.views.generic导入ListView,DetailView
从review.models导入review
从…起导入视图
urlpatterns=[
路径(“”,ListView.as_视图(
queryset=Review.objects.all().order_by(“-date”)[:25],
模板(name=“review/review.html”),
re_path(“(?P(\d+)”,DetailView.as_view(model=Review,template_name=“Review/post.html”),
路径('new/',views.review_new,name='review_new'),
路径('new/comment',views.add_comment_to_post,name='add_comment_to_post'),
]

我可以看到您应该将
comment.Review=Review
更改为类似于
comment.Review=Review.objects.get(id=Review\u id)
的内容,其中
Review\u id
是从表单传递的id。还要注意,您的评论模型允许评论为空,这意味着您当前添加的评论没有正确链接到它们应该相关的原始帖子/评论

我可以看到您应该将
comment.Review=Review
更改为类似于
comment.Review=Review.objects.get(id=Review\u id)
的内容,其中
Review\u id
是从表单传递的id。还要注意,您的评论模型允许评论为空,这意味着您当前添加的评论没有正确链接到它们应该相关的原始帖子/评论

此行:
comment.Review=Review
您尚未定义
Review
,并且您正在设置一个与字段
Review
无关的属性
Review
。好的,您在文件前面已经定义了
review
,但是
review
只是一个函数(
def review(request):
)。首先,您应该以某种方式获得评论:提交评论的表单应该在url中包含评论id或作为输入字段。然后获取它
comment\u review=review.objects.get(id=review\u id)
然后在保存之前进行
comment.review=comment\u review
。查看CommentForm类定义和模板文件会很有帮助。您好,当我输入您所说的内容时,当我现在去添加注释时,它会说没有定义review\u id。我下面给出了harry boyd关于任何帮助的回答。如果是,请将其标记为已接受的答案,谢谢。此行:
comment.Review=Review
您尚未定义
Review
,您正在设置与字段
Review
无关的属性
Review
。好的,您在文件前面已经定义了
review
,但是
review
只是一个函数(
def review(request):
)。首先,您应该以某种方式获得评论:提交评论的表单应该在url中包含评论id或作为输入字段。然后获取它
comment\u review=review.objects.get(id=review\u id)
然后在保存之前进行
comment.review=comment\u review
。查看CommentForm类定义和模板文件会很有帮助。您好,当我输入您所说的内容时,当我现在去添加注释时,它会说没有定义review\u id。我下面给出了harry boyd关于任何帮助的回答。如果是这样的话,请您将其标记为已接受的答案,谢谢。您好,当我把您所说的内容放进去时,当我现在去添加评论时,它说评论id不是defined@harryboyd是否使用forms.py更新问题?我想您可以在表单中添加一个字段,用于我希望该评论属于的评论。@harryboyd有什么帮助吗?我想这段视频可能也会有帮助(你需要仔细听,因为这家伙的口音)嗨,当我把你说的话放进去,当我现在去添加评论时,它说评论id不是defined@harryboyd是否使用forms.py更新问题?我想您可以在表单中添加一个字段,用于我希望该评论属于的评论。@harryboyd有什么帮助吗?我认为这段视频可能也有帮助(你需要仔细听,因为这家伙的口音)