【问题标题】:how do i link my listview and detailsview in django templates such that when i click the list it then shows me the details我如何在 django 模板中链接我的列表视图和详细信息视图,这样当我单击列表时,它会向我显示详细信息
【发布时间】:2019-11-02 08:45:10
【问题描述】:

“我正在设置我的项目的 django 模板以显示学校活动和工作列表,我希望它的响应在我单击列表上的项目后向我显示列表的详细信息 - 有人可以帮助我新手 tp 编程"

我尝试将 slugfield 添加到我的模型中,更改了几次网址,但我仍然未能达到我的目标

models.py

class Events(models.Model):    
    title = models.CharField(max_length=80)
    host = models.CharField(max_length=80)
    venue = models.CharField(max_length=80)
    event_image = models.ImageField()
    details = models.TextField()
    posted_at = models.DateTimeField(auto_now_add=True)
    start_time = models.DateTimeField()
    end_time = models.DateTimeField()
    contacts = models.CharField(max_length=80)
    sponsors = models.CharField(max_length=80, null=True, blank=True)
    slug = models.SlugField(max_length=150, null=True, blank=True)
    class Meta:
        ordering = ('-posted_at',)

views.py

class EventsListView(ListView):

    model = Events
    form_class = EventsForm
    context_object_name = 'all_events'
    template_name = 'events_list.html'
    success_url = reverse_lazy('list_events')
    def get_queryset(self):
        qs = super(EventsListView, self).get_queryset()
    return qs





class DetailEventsView(DetailView):
    model = Events

    def render_to_response(self, context, **response_kwargs):
        if self.request.is_ajax():
            return JsonResponse('Your comment has been                     uploaded!',safe=False, **response_kwargs)
    else:
        return super(DetailView,self).render_to_response(context, **response_kwargs)


def get_context_data(self, **kwargs):
    context = super(Events, self).get_context_data(**kwargs)
    data = self.kwargs['name']
    context['object'] = Events.objects.filter(events_id=data)
    return context

url.py

urlpatterns = [
    url(r'^create-events/$', CreateEventsView.as_view(), 
    name='create_events'),
    url(r'^list-events/$', EventsListView.as_view(), 
    name='list_events'),
    url(r'^(?P<events_id>\d+)$', DetailEventsView.as_view(), 
    name='detail_events'),
    ]

模板

<div>
  {% for events in all_events %}
    <li>
     <a href="{% url 'posts:list_events'  %}"> {{ events.title }}  
 </a>  
    </li>
    <a href="{% url 'posts:detail_events' %}" class="btn btn-default"> 
   {% trans '{{ events.title }}' %}</a>
  {% endfor %}
 </div>



Reverse for 'detail_events' with no arguments not found. 1 pattern(s) tried: ['(?P<events_id>\\d+)$']

【问题讨论】:

  • 鉴于问题是关于在模板中创建链接,您不认为应该显示该模板吗?
  • 另外,请修正您的缩进,并删除与此问题无关的代码,例如表单和创建视图。
  • @DanielRoseman 好的,谢谢我的第一个问题 - 抱歉

标签: python django listview django-templates detailsview


【解决方案1】:

好吧,我想了很久,但只是为了帮助像我这样的新手,问题是模板,在 events_list 链接到 event_details 的部分就像

    <a href="{% url 'posts:detail_events' %}" class="btn btn-default"> 

但应该是这样的

<a href="{% url 'posts:detail_events' events.id %}">       {% trans '{{ events.title }}' %}</a>

详情如下

 <h1 class="mt-4 text-center">{{ events.title }}</h1>
       host : <p>{{ events.host }}</p>
       ......

【讨论】:

  • 请注意网址规范并将其反映在您的模板中
猜你喜欢
  • 2016-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-09
  • 2010-12-06
相关资源
最近更新 更多