簡體   English   中英

Django 將對象從模板傳遞到視圖

[英]Django Passing objects from template to view

我真的很喜歡 django 模板語言,但是當涉及將多個字符串從模板傳遞給視圖時,我不知道。 因此,我想弄清楚要使用哪種現代工具。

您建議接下來學習什么來處理此類任務,或者在 Django 中是否有我尚未發現的方法?

編輯:我知道查詢對象。 我正在尋找的是將對象及其所有屬性傳回。

一個簡單的 foo 模型:

class foo(models.Model):
    name = models.CharField(max_length=75)
    categories = models.ManyToManyField(Category)

    def __str__(self):
        return self.name

我通過foos = foo.objects.all()將實例傳遞給模板。 在模板上,他們像這樣處理:

在這里,作為具有自動完成功能的文本字段:

<form method="POST" action="/path/">
    {% csrf_token %}
    <input type="text" class="btn btn-default" name="foo" list="foos">
    <datalist id="foos">
    {% for foo in foos %}
        <option value="{{ foo }}">
    {% endfor %}
    </datalist>
    <button class="btn btn-default">send</button>
 </form>

作為每個 foo 實例的圖塊:

<form method="POST" action="/path">
    {% csrf_token %}
    <ul class="wrapper">
    {% for category_ in categories %}   
        {% for foo in foos %}
            {% if category_ in foo.categories.all %}
            <input name="foo" type="submit" value="{{ foo }}" class="box box_text">
            {% endif %}
        {% endfor %}
     {% endfor %}
     </ul>
</form>

request.POST我將 foo 名稱作為字符串。 我想將整個實例發送回視圖進行處理。 它也可以只發送foo.id 但我不知道如何將foo.id放入模板而不顯示在foo.name旁邊,而是在request.POST作為變量發送。

除了那個問題之外,我想建議您為此類任務學習什么技術(JSON、Ajax...)

在沒有看到foo對象實際上是什么樣子的情況下,我將假設發生了以下情況:

  1. 您只是在模板中指定foo
  2. 由於這就是您指定的全部內容,Django 將嘗試將對象打印為字符串,調用對象的__str__魔術方法或__unicode__

如果您只想打印名稱,然后僅打印 id,只需專門打印這些屬性,而不僅僅是foo ,如下所示:

<option value="{{ foo.id }}">{{ foo.name }}</option>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM