i have created the feedback app on learning system however i can not render the feedback page that return feedback details when i click the feedback link it does not return anything as shown below.
enter image description here
Below is the view.py
# feedback/views.py
from django.shortcuts import render, redirect
from django.contrib import messages
from accounts.models import User
def feedback_view(request):
feedback_data = User.objects.filter(username=request.user)
context = {
"feedback_data": feedback_data
}
return render(request, "feedback/feedback.html", context)
@property
def feedback_save(request):
if request.method != "POST":
messages.error(request, "Invalid Method.")
return redirect('feedback')
else:
feedback = request.POST.get('feedback_message')
feedback_data = User.objects.get(username=request.user.id)
try:
add_feedback = FeedBack(username=feedback_data, feedback=feedback, feedback_reply="")
add_feedback.save()
messages.success(request, "Feedback Sent.")
return redirect('feedback')
except:
messages.error(request, "Failed to Send Feedback.")
return redirect('feedback')
model.py
from django.db import models
from django.conf import settings
User = settings.AUTH_USER_MODEL
class FeedbackMessage(models.Model):
id = models.AutoField(primary_key=True)
user_id = models.ForeignKey(User, on_delete=models.CASCADE)
feedback = models.TextField()
feedback_reply = models.TextField(null=True)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
objects = models.Manager()
feedback.html
{% extends 'base.html' %}
{% block page_title %}
Feedback Message
{% endblock page_title %}
{% load static %}
{% block main_content %}
this is a test
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-md-12">
<!-- general form elements -->
<div class="card card-primary">
<div class="card-header">
<h3 class="card-title">Leave a Feedback Message</h3>
</div>
<!-- /.card-header -->
{% comment %} Display Messages {% endcomment %}
{% if messages %}
<div class="form-group">
<div class="col-12">
{% for message in messages %}
{% if message.tags == "error" %}
<div class="alert alert-danger alert-dismissible fade show" role="alert" style="margin-top: 10px;">
{{ message }}
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
{% elif message.tags == "success" %}
<div class="alert alert-success alert-dismissible fade show" role="alert" style="margin-top: 10px;">
{{ message }}
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
{% endif %}
{% endfor %}
</div>
</div>
{% endif %}
<form method="POST" action="{% url 'staff_feedback_save' %}">
{% csrf_token %}
<div class="card-body">
<div class="form-group">
<label>Feedback Message </label>
<textarea name="feedback_message" class="form-control" rows="6" placeholder="Feedback Message"></textarea>
</div>
</div>
<!-- /.card-body -->
<div class="card-footer">
<button type="submit" class="btn btn-primary">Leave a Feedback</button>
</div>
</form>
</div>
<!-- /.card -->
</div>
</div>
<div class="row">
<div class="col-md-12">
<div class="card card-success">
<div class="card-header">
<h3 class="card-title">Feedback History</h3>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table">
<thead class="thead-light">
<tr>
<th>#ID</th>
<th>Feedback Message</th>
<th>Feedback Reply</th>
</tr>
</thead>
{% for row in feedback_data %}
<tr>
<td>{{ row.id }}</td>
<td>{{ row.feedback }}</td>
<td>{{ row.feedback_reply }}</td>
</tr>
{% endfor %}
</table>
</div>
</div>
<!-- /.card-body -->
</div>
</div>
</div>
</div><!-- /.container-fluid -->
</section>
{% endblock main_content %}
{% block custom_js %}
{% endblock custom_js %}
i expect the app should return the feedback of each user in a row and the reply cell at the end