Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.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-ListView url未连接到所需视图_Python_Django_Django Models_Django Views_Django Templates - Fatal编程技术网

Python Django-ListView url未连接到所需视图

Python Django-ListView url未连接到所需视图,python,django,django-models,django-views,django-templates,Python,Django,Django Models,Django Views,Django Templates,我是Django的新手,在项目的某个部分遇到了麻烦,我希望有人能帮助我 在我的views.py文件中有两个ListView,我希望它们的工作方式类似于已发布/草稿文章(我实际上使用的是经过清理和未经清理的报告)。目前,每次我尝试访问“未初始化”列表视图(Unsanitised_list.html),它都会将我指向已清理列表视图(intelreport_list.html) views.py: class IntelReportListView(ListView): model = Intel

我是Django的新手,在项目的某个部分遇到了麻烦,我希望有人能帮助我

在我的views.py文件中有两个ListView,我希望它们的工作方式类似于已发布/草稿文章(我实际上使用的是经过清理和未经清理的报告)。目前,每次我尝试访问“未初始化”列表视图(Unsanitised_list.html),它都会将我指向已清理列表视图(intelreport_list.html)

views.py:

class IntelReportListView(ListView):
  model = IntelReport
  context_object_name = 'all_logs'

  def get_queryset(self):
    return IntelReport.objects.filter(create_date__lte=timezone.now()).order_by('-create_date')



class UnsanitisedListView(LoginRequiredMixin, ListView):
    login_url = '/login/'
    redirect_field_name = 'intel_db/unsanitised_list.html'
    
    model = IntelReport

    def get_queryset(self):
      return IntelReport.objects.filter(sanitised__isnull=True).order_by('-create_date')
models.py

class IntelReport(models.Model):
    gpms_choices = (
      ***REDACTED***
    )
    gpms = models.CharField(max_length=20, blank=True, null=True, choices=gpms_choices)
    
    officer = models.CharField(max_length=50)
    create_date = models.DateTimeField(auto_now_add=True)
    sanitised = models.BooleanField(default=False)

    source_eval_choices = (
      ***REDACTED****
    )
    source_eval = models.CharField(max_length=50, blank=True, null=True, choices=source_eval_choices)
    
    intel_eval_choices = (
      ***REDACTED***
    )
    intel_eval = models.CharField(max_length=100, blank=True, null=True, choices=intel_eval_choices)

    report = models.TextField(max_length=5000, blank=True, null=True)

    def sanitised_log(self):
      self.sanitised = True
      self.save()

    def get_absolute_url(self):
      return reverse('log_details', kwargs={'pk':self.pk})

    def __str__(self):
      return str(self.pk)
url.py

从django.url导入路径 从“英特尔数据库导入”视图

urlpatterns = [
    path('welcome/', views.AboutView.as_view(), name='about'),
    path('logs/', views.IntelReportListView.as_view(), name='log_list'),
    path('logs/<int:pk>/', views.IntelReportDetailView.as_view(), name='log_detail'),
    path('logs/new_log/', views.IntelReportCreateView.as_view(), name='new_log'),
    path('unsanitised/', views.UnsanitisedListView.as_view(), name='unsanitised'),
    path('logs/<int:pk>/sanitise_log/', views.sanitsed_report, name='sanitised_report'),
]
urlpatterns=[
path('welcome/',views.AboutView.as_view(),name='about'),
路径('logs/',views.IntelReportListView.as_view(),name='log_list'),
路径('logs/',views.IntelReportDetailView.as_view(),name='log_detail'),
路径('logs/new_log/',views.IntelReportCreateView.as_view(),name='new_log'),
路径('unsanitised/',views.UnsanitisedListView.as_view(),name='unsanitised'),
路径('logs//sanitise_log/',views.sanitised_report,name='sanitised_report'),
]
在我的登录页(landing.html)上,这是我用来尝试访问未初始化的_list.html的链接:

      **<a href="{% url 'unsanitised' %}">**
        
****
我不明白为什么它总是将我重定向到intelreport_lists.html(已清除的日志)而不是unsatised_list.html(未清除的日志)

我希望我没有错过一些真正简单的东西,但我已经克服了它,并试图重新写了无数次,但不能得到它的权利

我希望这是足够的信息和任何帮助将不胜感激


干杯

当您扩展
列表视图
时,您只需覆盖
模板名称
。我的意思是像这样更新你的
IntelReportListView
未初始化的listview

class IntelReportListView(ListView):
  model = IntelReport
  context_object_name = 'all_logs'
  template_name = 'YOUR_APP_NAME/intelreport_list.html'

  def get_queryset(self):
    return IntelReport.objects.filter(create_date__lte=timezone.now()).order_by('-create_date')



class UnsanitisedListView(LoginRequiredMixin, ListView):
    login_url = '/login/'
    redirect_field_name = 'intel_db/unsanitised_list.html'
    template_name = 'YOUR_APP_NAME/unsanitised_list.html'
    model = IntelReport

    def get_queryset(self):
      return IntelReport.objects.filter(sanitised__isnull=True).order_by('-create_date')

如果您有兴趣了解为什么它会重定向到
intelreport\u list.html
而不是
unassisted\u list.html
,那么每当您扩展
ListView
时,它将默认查找
MODEL\u NAME\u list.html
,其中
MODEL\u NAME
是您在列表视图中使用的模型的名称(小写)。由于您在
未初始化列表视图中使用了
model=IntelReport
,因此它将重定向到
IntelReport\u lists.html

请告诉我这是否有帮助,这非常有意义!现在一切都按照我的预期工作。感谢您花时间回答和解释。