I want to display my restaurant list for which i used a function based view and it is working fine but when i import generic list view then it's not displaying that list

25 views
Skip to first unread message

Ruhail Ahmad

unread,
Dec 21, 2017, 9:30:59 PM12/21/17
to Django users
#VIEWS.PY
from django.db.models import Q
from django.shortcuts import render
from django.http import HttpResponse
from django.views.generic import TemplateView
from django.views.generic import ListView
from .models import ResturantLocation

# Create your views here.

def resturant_listview(request):
template_name = 'resturants/resturants_list.html'
queryset     = ResturantLocation.objects.all()
context        = {
                   "obj_list": queryset
                   }
return render(request,template_name,context)

class ResturantListView(ListView):
template_name   = 'resturants/resturants_list.html'
queryset        =  ResturantLocation.objects.all()

#URLS.PY
from django.conf.urls import url
from django.contrib import admin
from django.views.generic import TemplateView, ListView
from resturants.views import (
resturant_listview,
ResturantListView,
    )

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^$', TemplateView.as_view(template_name = 'home.html')),
    #url(r'^resturants/$',resturant_listview),
    url(r'^resturants/$', ResturantListView.as_view()),
    url(r'^resturants/(?P<slug>\w+)/$', ResturantListView.as_view()),
    url(r'^about/$', TemplateView.as_view(template_name= 'about.html')),
    url(r'^contact/$', TemplateView.as_view(template_name = 'contact.html')),
]

#HTML(resturants_list.html):

{% extends 'base.html' %}

{% block title %}Resturants List{% endblock %}

{% block content %}

<h1>Resturants List</h1>
<ul>
{% for obj in obj_list %}
<li>{{obj.name}} {{obj.location}} {{obj.category}} {{obj.timestamp}}</li><hr>
{% endfor %}
</ul>
{% endblock content %}

#MODELS.PY
from django.db import models

# Create your models here.
class ResturantLocation(models.Model):
name        = models.CharField(max_length=120)
location    = models.CharField(max_length=120,null=True,blank=True)
category    = models.CharField(max_length=120,null=True,blank=False)
timestamp   = models.DateTimeField(auto_now_add=True)
update      = models.DateTimeField(auto_now=True)


def __str__(self):
return self.name





output.JPG

Matemática A3K

unread,
Dec 22, 2017, 12:40:54 AM12/22/17
to django...@googlegroups.com
On Thu, Dec 21, 2017 at 3:05 PM, Ruhail Ahmad <ruhail...@gmail.com> wrote:
def resturant_listview(request):
template_name = 'resturants/resturants_list.html'
queryset     = ResturantLocation.objects.all()
context        = {
                   "obj_list": queryset
                   }
return render(request,template_name,context)

class ResturantListView(ListView):
template_name   = 'resturants/resturants_list.html'
queryset        =  ResturantLocation.objects.all()

 
{% block content %}

<h1>Resturants List</h1>
<ul>
{% for obj in obj_list %}
<li>{{obj.name}} {{obj.location}} {{obj.category}} {{obj.timestamp}}</li><hr>
{% endfor %}
</ul>
{% endblock content %}


It's because ListView makes available the queryset to the template in the "object_list" variable, and your template is expecting "obj_list" which you provide in your FBV

Reply all
Reply to author
Forward
0 new messages