मैं django टेम्प्लेट भाषा का उपयोग करके एक डायनामिक html तालिका जेनरेट करने का प्रयास कर रहा हूं और मैं इसे अभी तक नहीं कर पाया हूं।

मेरे Views.py और table.html . के बारे में कुछ जानकारी यहां दी गई है

views.py

Class table(TemplateView):
      template_name = 'table.html'

      def get(self, request):
             header = {'header':['#', 'chemblID','Preferable Name']}
             rows = {'rows':{
                            'id':[1,2,3],
                            'chemblid':[534988,31290, 98765], 
                            'prefName':['A', 'B', 'C']}}

             return render(request,self.template_name, header,rows)

(डेटा हार्ड-कोडेड है क्योंकि मैं अभी भी परीक्षण कर रहा हूं। हालांकि इसे उपयोगकर्ता इनपुट के अनुसार बदलना चाहिए।)

table.html

<table class="table">
    <thead>
        <tr>
            {% for k in header %}
            <th>{{k}}</th>
            {% endfor %}
        </tr>
    </thead>
    <tbody>
        {% for r in rows %}
            <tr>
                {% for e in r %}
                    <td>{{e.id}}</td>
                    <td>{{e.chemblid}}</td>
                    <td>{{e.prefName}}</td>
                {% endfor %}
            </tr>
        {% endfor %}
    </tbody>
</table>

मैं कुछ इस तरह उत्पन्न करने की कोशिश कर रहा हूँ:

--------------------------------------------------------------
|     #      |      chemblID      |      Preferable Name      |
--------------------------------------------------------------
|     1      |       534988       |            A              |
--------------------------------------------------------------
|     2      |       31290        |            B              |
--------------------------------------------------------------
|     3      |       98765        |            C              |
--------------------------------------------------------------
|    ...     |        ...         |           ...             |
--------------------------------------------------------------

अपना समय बिताने के लिए अग्रिम धन्यवाद

3
PythagorasDoe 27 जुलाई 2018, 14:00
दृश्य पर आपको संदर्भ को रेंडर फ़ंक्शन में निर्देश के रूप में भेजना होगा। अबो उदाहरण पर आप ऐसा नहीं कर रहे हैं। इसलिए आप टेम्प्लेट render(request,self.template_name, context={'header':header,'rows':rows}) पर वेरिएबल मान प्राप्त करने में सक्षम नहीं हैं
 – 
Nakul Narayanan
27 जुलाई 2018, 14:24

2 जवाब

सबसे बढ़िया उत्तर

आप अपने टेम्पलेट में संदर्भ भेजने के लिए get_context_data विधि का उपयोग कर सकते हैं

Class table(TemplateView):
      template_name = 'table.html'

      def get_context_data(self, **kwargs):
            ctx = super(table, self).get_context_data(**kwargs)
            ctx['header'] = ['#', 'chemblID','Preferable Name']
            ctx['rows'] = [{'id':1, 'chemblid':534988,'prefName':'A'},
                           {'id':2, 'chemblid':31290,'prefName':'B'},
                           {'id':3, 'chemblid':98765,'prefName':'C'}]
            return ctx

और आप html में अतिरिक्त लूप को हटा सकते हैं

<table class="table">
    <thead>
        <tr>
            {% for k in header %}
            <th>{{k}}</th>
            {% endfor %}
        </tr>
    </thead>
    <tbody>
        {% for r in rows %}
            <tr>
                <td>{{r.id}}</td>
                <td>{{r.chemblid}}</td>
                <td>{{r.prefName}}</td>
            </tr>
        {% endfor %}
    </tbody>
</table>
3
leelum1 27 जुलाई 2018, 15:17
आपका बहुत बहुत धन्यवाद! इसने काम कर दिया! मैं टेम्पलेट इंजन के साथ संदर्भ शब्दकोशों का उपयोग करके वास्तव में भयानक हूं!
 – 
PythagorasDoe
27 जुलाई 2018, 16:17

टेम्पलेट में बस टेबल क्लास बदलें

<table class="table table-bordered">

दृश्य में

return render(request,self.template_name,{"header":header,"rows":rows})
-1
Pranay reddy 27 जुलाई 2018, 14:50
गलती से मैंने सबमिट पर क्लिक कर दिया, बिना पूरा जवाब दिए ....अब अपडेट किया गया
 – 
Pranay reddy
27 जुलाई 2018, 14:54
अभी भी काम नहीं करता है। साथ: रिटर्न रेंडर (अनुरोध, self.template_name, शीर्षलेख, पंक्तियां) मैं तालिका के शीर्षलेख करने में सक्षम हूं लेकिन पंक्तियों को नहीं। रिटर्न रेंडर (अनुरोध, self.template_name, संदर्भ = {"हेडर": हेडर, "पंक्तियां": पंक्तियां) के साथ मुझे बस एक अजीब तालिका मिलती है जैसे पहली पंक्ति में 1 कॉलम के साथ टेक्स्ट "हेडर" अंदर और दूसरी पंक्ति 12 खाली होती है कॉलम
 – 
PythagorasDoe
27 जुलाई 2018, 15:19