I am working on a Django project. I have to display database data in the Django template but I can't find out my mistake in my code that is not allowing me to display data on the HTML page.
views.py
def viewposts(request):
posts = NewPost.objects.all()
return render(request,"network/index.html",{
"posts" : posts,
})
Here is my model:
models.py
class NewPost(models.Model):
user = models.ForeignKey(User, on_delete = models.CASCADE)
post = models.TextField()
timestamp = models.DateTimeField(auto_now_add = True)
def __str__(self):
return f"post : {post} || user: {user} || timestamp: {timestamp} "
HTML template
<div id="posts">
{% for posts in posts %}
<ul>
<li>
<h4>{{ posts.user }} || {{ posts.timestamp }}</h4>
<h3>{{ posts.post }}</h3>
</li>
</ul>
{% empty %}
<h6>No post availabel 😔</h6>
{% endfor %}
</div>
urls.py
urlpatterns = [
path("", views.index, name="index"),
path("login", views.login_view, name="login"),
path("logout", views.logout_view, name="logout"),
path("register", views.register, name="register"),
path("index/",views.NewPostMaker,name="post"),
path("index/",views.viewposts,name="posts")
]
I know I have done a silly mistake on any part of my code but I can hardly find it out. When I fill-up the form, data is stored in the database but I can't display them on the HTML page.
index/patterns, hence it will fire theNewPostMaker, not theviewposts.