invalid literal for int() with base 10 im Django Template

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
würmchen
User
Beiträge: 255
Registriert: Mittwoch 7. November 2007, 14:17

Hallo Leute, ich hab ein Problem mit Django Template und kann den Fehler nicht so recht eingrenzen.

Hab im Forum gelesen, dass der oben genannte Fehler kommt, wenn man versucht einen String wie eine Liste zu behandeln.

Ich hab mir den Typ der Variable ausgeben lassen und die Variable selbst, alles deutet auf eine Liste hin.

Code: Alles auswählen

type:  <type 'list'>
results are:  [{'entry_key': 22L, 'model_id': '1', 'nr_cavities': 1L, 'title': 
'Solution NMR structure of UPF0107 protein AF_0055, Northeast Structural 
Genomics Consortium Target GR101', 'protein': 1L, 'id': '2hi6'}, 
{'entry_key': 22L, 'model_id': '2', 'nr_cavities': 1L, 'title': 'Solution NMR 
structure of UPF0107 protein AF_0055, Northeast Structural Genomics 
Consortium Target GR101', 'protein': 1L, 'id': '2hi6'}, {'entry_key': 22L, 
'model_id': '3', 'nr_cavities': 2L, 'title': 'Solution NMR structure of UPF0107 
protein AF_0055, Northeast Structural Genomics Consortium Target 
GR101', 'protein': 1L, 'id': '2hi6'}]
Das Template was ich aufrufe sieht so aus:

Code: Alles auswählen

{{ result }}
{% for item in result %}
        <div id="{{ item.model_key }}" class="entry_model">
            <div class="resolution">{{ item.resolution }} Å</div>
            <div class="chkbox">
                <input type="checkbox" 
                    name="entry_key" 
                    value="{{ item.entry_key }}" 
                    checked="checked"/>
                </div>
            <div class="res_title">
                <span class="add_info">
                    {{ item.pdb_code }} - {{ item.title|title }}</span>
            </div>
            <div class="model">model_id: {{ item.model_id }}
                {% with item.nr_models|add:"-1" as other_models %}
                {% if other_models %}
                    <span class="add_models">load other models</span>
                {% endif %}
                {% if dev %}entry_key: {{ item.entry_key }}{% endif %}

            </div>
            <div class="short_info">
                {% if item.iface_cav %}
                    {{ item.iface_cav }} Interface{{ item.iface_cav|pluralize }}
                    by Cavity<br />
                {% endif %}
                {% if item.iface_lig %}
                    {{ item.iface_lig }} Interface{{ item.iface_lig|pluralize }}
                    by Ligand<br />
                {% endif %}
                {% if item.protein %}
                    {{ item.protein }} Protein chain{{ item.protein|pluralize }}
                    <br />
                {% endif %}
                {% if item.rna %}
                    {{ item.rna }} RNA chain{{ item.rna|pluralize }} <br />
                {% endif %}
                {% if item.dna %}
                    {{ item.dna }} DNA chain{{ item.dna|pluralize }} <br />
                {% endif %}
            </div>
            <div class="long_info">
                <div class="create_buttons"></div>
                <div class="info"></div>
                <div class="create_options"></div>
            </div>
            <div class="keys hidden">
                <input name="entry_key" type="text" value="{{ item.entry_key }}" readonly="readonly" />
                <input name="model_key" type="text" value="{{ item.model_key }}" readonly="readonly" />
                <input name="model_id" type="text" value="{{ item.model_id }}" readonly="readonly" />
                <input name="pdb_code" type="text" value="{{ item.pdb_code }}" readonly="readonly" />
                <input name="count" type="text" value="{{ count }}" readonly="readonly" />
                <input name="other_models" type="text" value="1" readonly="readonly" />
                {% endwith %}
            </div>
        </div>
{% endfor %}
Und mein Aufruf des Templates sieht so aus:

Code: Alles auswählen

def addmodels(request):
    from bifinterface.interface.interface import WebInterface
    from bifinterface.interface import output
    interface = WebInterface(request.POST['database'],
            request.session.get('tablename'))
    cursor = interface.getCursor()

    models = output.AddModels(cursor,request.POST['entrykey_modelid'])
    results = models.getResults()

    developer = False
    for group in request.user.groups.all():
        if group.name == 'developer':
            developer = True

    print "type: ", type(results)
    print "results are: ", results
    return render_to_response('interface/addmodels.html',
            {'result' : results,
                'dev' : developer,
                'count' : request.POST['count'],
                'string' : str(results)})
Hier sieht man auch die beiden print Anweisungen, mit denen ich Resiult ausgeben lasse und den type.

Ich dachte zuerst, dass es an dem request.POST['count'] liegt, aber selbst wenn ich das weg mache, bekomm ich den Fehler. In der Django Fehlerseite, sagt er mir, der Fehler liegt genau an in der zweiten Zeile des Templates. Die erste Zeile hab ich zum testen rein geschrieben, wenn diese allein steht, wird einfach der Inhalt als string ausgegeben.

Kann es wirklich sein, dass er die Variable falsch interpretiert?
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Puh, ohne das jetzt durchgelesen zu haben: Du wandelst irgendwo eine Nicht-Zahl in ne Zahl um bzw versuchst es. Sowas wie `int(ungueltige_zahl)`.
würmchen
User
Beiträge: 255
Registriert: Mittwoch 7. November 2007, 14:17

Ja, auch wenn ich das schon vorher gewusst hatte, bin nach Deinem Hinweis hin und hab das Template erst minimal gestalltet und dann weiter aufgebaut und dann festgestellt, dass ich die gesendete Liste noch nicht geupdated habe und da Keys falsch waren.

Auf einen der Keys mache ich in meinem template ein add und das was genau mein problem...

also fehler erkannt und gebannt...

Danke
Antworten