簡體   English   中英

使用django-floppyforms時將值傳遞給html模板

[英]Passing values to html template when using django-floppyforms

我正在使用django-floppyforms。 如何將一些值傳遞給html模板? (用於初始化字段和進行簡單打印)。 以下代碼說明了該設置:

models.py:

class ContactMessage(models.Model):    
    msg_sender = models.ForeignKey(User, related_name="sent_messages")
    msg_receiver = models.ForeignKey(User, related_name="received_messages")
    listing = models.ForeignKey(Listing)
    msg_title = models.CharField(max_length=200)
    msg_body = models.TextField()

urls.py:

url(r'^listing/(?P<listing_id>\d+)/reply/$', views.ReplyListingView.as_view(), name='reply_listing'),

views.py:

class ReplyListingView(CreateView):
    model = ContactMessage
    form_class = CreateContactMessageForm

forms.py:

class CreateContactMessageForm(forms.ModelForm):

    class Meta:
        model = ContactMessage

        exclude = ['msg_sender',
                   'msg_receiver',
                   'listing',
                  ]

        widgets = {
            'msg_title': forms.TextInput({"value": ????}),
            'msg_body': forms.Textarea,
        }   

contactmessage_form.html:

{% extends 'base.html' %}

{% block content %}
<div class="row">
  <div class="col-md-6">
      <p>USER: {{request.user}} 
         SENDER: {{ form.sender }} 
         RECEIVER: {{ form.receiver }}
         LISTING: {{ form.listing }}
      </p>
      <form method="post">
        {% csrf_token %}
        {{form}}
        <input class="btn btn-success" type="submit" value="Send" />
        <button type="button" class="btn btn-default" onClick="window.history.back();">
                Cancel
        </button>
      </form>
  </div>
</div>

{% endblock %}

所以:

假設在特定的上下文中,我知道列表,發送者和接收者(背景說明:URL具有listing_id,因此列表的標題和所有者是已知的;此外,發送者應該是當前登錄的用戶)。

現在,我想顯示一個ReplyListingView,將這三個值傳遞給它,然后讓它顯示CreateContactMessageForm這樣:

  1. msg_title小部件預先填充了給定列表的“ title”字段的值(即,代替了上面代碼中的“ ????”部分)

  2. 我可以在html( <p>USER:...</p>部分)中訪問發送者,接收者和列表字段的值。

我怎樣才能做到這一點?

我希望這個問題足夠清楚。

謝謝 :)

假設軟盤形式就像django形式一樣(看起來像那樣),只需使用初始形式即可: https ://docs.djangoproject.com/en/dev/ref/forms/api/#dynamic-initial-values

有一個初始的View變量。

看看這個站點,他們擁有所有查看方法和變量: http : //ccbv.co.uk/projects/Django/1.5/django.views.generic.edit/CreateView/

您還可以重寫實例化表單的方法並添加縮寫

class ReplyListingView(CreateView):

    model = ContactMessage
    form_class = CreateContactMessageForm

    #add this line to the view
    initial={"field_name":"value"}

關於標題,您應該使用get_initial將初始數據傳遞給表單。

關於其他非get_context_data內容,您的視圖應通過get_context_data將其注入模板。

class ReplyListingView(CreateView):
    model = ContactMessage
    form_class = CreateContactMessageForm

    def get_initial(self):
        d = super(ReplyListingView, self).get_initial()
        d['title'] = "blah"
        return d

    def get_context_data(self, **kwargs):
        d = super(ReplyListingView, self).get_context_data(**kwargs)
        d['foo'] = 'bar'
        return d

暫無
暫無

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

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