Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.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 视图管理面板.views.create类别没有';t返回HttpResponse对象。它没有返回任何结果_Python_Django - Fatal编程技术网

Python 视图管理面板.views.create类别没有';t返回HttpResponse对象。它没有返回任何结果

Python 视图管理面板.views.create类别没有';t返回HttpResponse对象。它没有返回任何结果,python,django,Python,Django,我不知道为什么我会遇到这个错误,我正在尝试建立一个管理面板。所以,在编码了所有我陷入这个错误的功能之后,我正在尝试创建类别功能 这是我的看法 def createcategory(request): if request.method == 'POST': createcat = CategoryForm(request.POST, request.FILES) if createcat.is_valid(): cat_name = createcat.clean

我不知道为什么我会遇到这个错误,我正在尝试建立一个管理面板。所以,在编码了所有我陷入这个错误的功能之后,我正在尝试创建类别功能

这是我的看法

def createcategory(request):
if request.method == 'POST':
    createcat = CategoryForm(request.POST, request.FILES)
    if createcat.is_valid():
        cat_name = createcat.cleaned_data['category_name']
        cat_image = createcat.cleaned_data['category_image']
        insert_cat = CategoryModel(
            category_name=cat_name, category_image=cat_image)
        insert_cat.save()
        create2 = CategoryForm()
        return render(request, 'createcat.html', {'create2': createcat})
    else:
        createcat = CategoryForm()
    all_categories = CategoryModel.object.all()
    return render(request, 'index.html')
这是我的模特

class CategoryModel(models.Model):
    category_id = models.AutoField(primary_key=True)
    category_name = models.CharField(max_length=100)
    category_image = models.ImageField(upload_to='images/')

您只在一个条件下返回,如果它位于
POST
,则不返回。因此,请在末尾添加默认返回值

就像:

if `POST`:
  ...
  return render(request, 'createcat.html', {'create2': createcat})
else:
  return render(request, 'default.html')
PS:使用以下代码格式缩进:

def createcategory(request):
    if request.method == 'POST':
        createcat = CategoryForm(request.POST, request.FILES)
        if createcat.is_valid():
            cat_name = createcat.cleaned_data['category_name']
            cat_image = createcat.cleaned_data['category_image']
            insert_cat = CategoryModel(
                category_name=cat_name, category_image=cat_image)
            insert_cat.save()
            create2 = CategoryForm()
            return render(request, 'createcat.html', {'create2': createcat})
        else:
            createcat = CategoryForm()
        all_categories = CategoryModel.object.all()
    return render(request, 'index.html')
    # print("test")
PS2:我想展示一下你的状态

def createcategory(request):
    createcat = CategoryForm(request.POST, request.FILES) # put your form here
    if request.method == 'POST':

        if createcat.is_valid():
            cat_name = createcat.cleaned_data['category_name']
            cat_image = createcat.cleaned_data['category_image']
            insert_cat = CategoryModel(
                category_name=cat_name, category_image=cat_image)
            insert_cat.save()
            create2 = CategoryForm()
            return render(request, 'createcat.html', {'create2': createcat})
        all_categories = CategoryModel.object.all() # make sure you know this line.
    return render(request, 'index.html', createcat) # put your empty form here

我以下面的代码示例中创建的类别模型为例。您创建的模型类别非常重要

您还需要保存在admin.py中创建的模型

models.py

class CategoryModel(models.Model):
    category_id = models.AutoField(primary_key=True)
    category_name = models.CharField(max_length=100)
    category_image = models.ImageField(upload_to='images/')
class Category(models.Model):
    title = models.CharField(max_length=150)
    slug = models.SlugField(editable=False)

    def __str__(self):
        return self.title

    def save(self, *args, **kwargs):
        self.slug = slugify(self.title)
        super(Category, self).save(*args, **kwargs)

    def task_count(self):
        return self.task.count()

class Task(models.Model):
    user = models.ForeignKey("auth.User", on_delete=models.CASCADE, verbose_name='TaskUser')  # user
    title = models.CharField(max_length=150, verbose_name='Task Title')
    content = RichTextField()
    created_date = models.DateTimeField(auto_now_add=True, verbose_name='Task Date')
    slug = models.SlugField(editable=False)
    category = models.ForeignKey(Category, on_delete=models.CASCADE, related_name="task")
    

    def __str__(self):
        return self.title

    def save(self, *args, **kwargs):
        self.slug = slugify(self.title)
        super(Task, self).save(*args, **kwargs)
如您所见,我在任务模型中添加了一个category字段

views.py

class IndexView(ListView):
    template_name = 'task/index.html'
    model = Task
    context_object_name = 'task'

    # paginate_by = 7

    def get_context_data(self, *, object_list=None, **kwargs):
        context = super(IndexView, self).get_context_data(**kwargs)
        return context

class CategoryDetail(ListView):  
    model = Task  
    template_name = 'category/category_detail.html'  
    context_object_name = 'task'  

    # paginate_by = 3

    def get_queryset(self):
        self.category = get_object_or_404(Category,
                                          pk=self.kwargs['pk'])  
        return Task.objects.filter(category=self.category).order_by('-id')  

    def get_context_data(self, *, object_list=None, **kwargs):
        context = super(CategoryDetail, self).get_context_data(**kwargs)
        self.category = get_object_or_404(Category, pk=self.kwargs['pk'])
        # context['category'] = self.category
        return context
最后,我在admin.py注册

管理员

admin.site.register(Task)
admin.site.register(Category)

我希望这会有所帮助。

@gadgengagethq你能用你最新的代码更新你的帖子吗?@gadgengagethq尝试使用我的帖子吗?你只需在这个函数的末尾添加一个
打印(“测试”)
?看看你能不能到那里。正如我在帖子中所做的那样,您应该取消对该行的注释。它显示index.html页面,但不显示formSure!因为您试图使用
GET
方法访问url。