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。