我发现我的django应用程序有一个非常奇怪的行为,我不理解。也许有人看到一个明显的错误,而我却没有看到。我也必须是管理员,我不是django的专家...
我有一个模型-Exposure
和我的应用app_name = 'BPMWebGUI'
一个用户可以有暴露,而我正在使用默认的django用户模型。
urls.py
urlpatterns = [
path('', views.user_login, name='user_login'),
path('<slug:slug>/', views.ExposureDetailView.as_view(), name='exposure_detail'),
path('my_exposures/', views.ExposureListView.as_view(), name='user_exposure_list'),
]
链接href="{% url 'BPMWebGUI:user_exposure_list' %}
有效且网址为: 127.0.0.1:8000/BPMWebGUI/file_upload / 出现在浏览器中
views.py
from django.views.generic.detail import DetailView
from django.views.generic.list import ListView
from django.contrib.auth.mixins import LoginRequiredMixin
from django.http import Http404
from .models import Exposure, User
class ExposureDetailView(LoginRequiredMixin, DetailView):
model = Exposure
def __init__(self,*args, **kwargs):
print("Exposure Detail View initiated")
super(DetailView, self).__init__(*args, **kwargs)
class ExposureListView(LoginRequiredMixin, ListView):
model = Exposure
template_name = 'BPMWebGUI/user_exposure_list.html'
def __init__(self,*args, **kwargs):
print("Exposure List View initiated")
super(ExposureListView, self).__init__(*args, **kwargs)
def get_queryset(self):
try:
print('get query set is called')
self.exposure_user = User.objects.prefetch_related('exposures').get(
username__iexact=self.kwargs.get("username")
)
except User.DoesNotExist:
print("I was here")
raise Http404
else:
return self.exposure_user
当我在调试模式下运行代码时,我总是以ExposureDetailView的__init__()
结尾,而不是以ExposureListView结尾。如果我想查看某些“曝光”的详细信息,则可以正确进入DetailView。有人可以帮忙吗?还是提供的信息不足?谢谢大家!
答案 0 :(得分:1)
my_exposures
是有效的子弹。 Django不知道您没有将其用作子弹,但意味着它会进入列表视图。您可以通过交换网址格式的顺序来解决此问题:
path('my_exposures/', views.ExposureListView.as_view(), name='user_exposure_list'),
path('<slug:slug>/', views.ExposureDetailView.as_view(), name='exposure_detail'),