aejsi5
aejsi5

Reputation: 147

Django Context isnt rendered

I want to render a view with some content. I don't get why the context isn't rendered. The render_recall_details() function causes problems --> ctx is not None, In my opinion there is no reason why it is not rendered in the html file

views.py

class RecallDetail(View):
    template_name = "recall_detail.html"

    def get(self, request, *args, **kwargs):
        if request.GET:
            q = request.GET
            q = q.dict()
            recall = find_recall_by_querystring(q)
            if recall:
                self.render_recall_details(request, recall)
            else:
               return render(request, self.template_name) 
        return render(request, self.template_name)

    def render_recall_details(self, request, obj, *args, **kwargs):
        ctx = {
            'head': 'Hallo',
            'rec': RecallForm(),
            'docs': find_docs(obj),
        }
        print(ctx)
        return render(request, self.template_name, context=ctx)

forms.py

class RecallForm(forms.ModelForm):
    class Meta:
        model = Recall
        fields = ('Recall_CODE', 'Recall_NAME', 'Recall_DESCRIPTION', 'Recall_START_DATE', 'Recall_PLANNED_COMPLETATION_DATE', 'Recall_STATUS', 'Recall_DATE_COMPLETED')

my html_template:

{% extends 'base.html' %}
{% block content %}
<div class="content-wrapper">
    <h1>{{ head }}</h1>
    ...
</div>
{% endblock content %}

Upvotes: 0

Views: 69

Answers (1)

JPG
JPG

Reputation: 88609

It seems like a typo in your code-base. In Django, every view must return a response. So, in your case, you are not returning anything if the variable recall has some value. So, change your view as,

class RecallDetail(View):
    template_name = "recall_detail.html"

    def get(self, request, *args, **kwargs):
        if request.GET:
            q = request.GET
            q = q.dict()
            recall = find_recall_by_querystring(q)
            if recall:
                # you need to put the `return` statement here
                return self.render_recall_details(request, recall)
            else:
               return render(request, self.template_name) 
        return render(request, self.template_name)

    def render_recall_details(self, request, obj, *args, **kwargs):
        ctx = {
            'head': 'Hallo',
            'rec': RecallForm(),
            'docs': find_docs(obj),
        }
        print(ctx)
        return render(request, self.template_name, context=ctx)

Upvotes: 2

Related Questions