Python Django-ListView url未连接到所需视图
我是Django的新手,在项目的某个部分遇到了麻烦,我希望有人能帮助我 在我的views.py文件中有两个ListView,我希望它们的工作方式类似于已发布/草稿文章(我实际上使用的是经过清理和未经清理的报告)。目前,每次我尝试访问“未初始化”列表视图(Unsanitised_list.html),它都会将我指向已清理列表视图(intelreport_list.html) views.py: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
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
请告诉我这是否有帮助,这非常有意义!现在一切都按照我的预期工作。感谢您花时间回答和解释。