2016-01-31 70 views
0

我正在使用python和django創建一個站點。我有2個模型,動作和圖像:使用Python將變量傳遞給html頁面Django

class Action(models.Model): 
    name = models.CharField("Action name", max_length=50) 
    keywords = models.CharField("Keywords", max_length=50) 
    object = models.CharField("Object", max_length=50, blank=True, null=True) 
    uploadDate = models.DateField("Date", default=get_current_date) 
    UploadedBy = models.CharField("UploadedBy", max_length=50, default="") 

class Image(models.Model): 
    image = models.FileField(upload_to=get_upload_file_name, default="") 
    action = models.ForeignKey(Action) 

我創建了一個組合的窗體,允許用戶創建一個動作並添加圖像。 現在我正在嘗試製作一個表單,用戶只能從當前頁面上查看動作,然後上傳一張圖片,與動作相關。

下面顯示ActionDetails HTML模板:點擊

<ul> 
<li><h3> Name: </h3> {{ action.name }} </li> 
<li><h3> Keywords: </h3> {{ action.keywords }} </li> 
<li><h3>Uploadedby: </h3> {{ action.UploadedBy }}</li> 
{% if action.object %} 
<li><h3>Object:</h3> {{ action.object }}</li> 
{% endif %} 
</ul> 

<p><a class="btn btn-default" href="img">Add Image &raquo;</a></p> 

{% if image.image %} 
<p><h3>Image:</h3><img src= "/static/app/{{image.image}}" width='300'/></p> 
{% endif %} 

我想,一旦窗體打開(BTN「添加圖片」),該action.id傳遞給ImageForm頁面。

views.py:

def addimg(request): 
    if request.method == "GET": 
     form = ImageForm; 
     return render(request,'app/createForm.html', { 'form':form }) 
    elif request.method == "POST": 
     form = ImageForm(request.POST, request.FILES) 
     if form.is_valid(): 
      form.save() 
      return HttpResponseRedirect('/actions') 
     else: 
      form = ImageForm; 
      return render(request, 'app/createForm.html', { 'form':form }) 

是否有這樣做的一種方式?

+0

嘗試使用Django窗體和一些引導的輸入方法,例如''在計算機中選擇文件並將其上傳到項目(站點)中的特定文件夾非常容易 –

回答

1

你似乎在問如何在鏈接中傳遞一個值,這是Django的一個基本和基本部分,在本教程中已經很好地介紹了這個部分 - 你可能想回頭再看看。

首先,您需要定義其捕獲值的URL:

url(r'img/(?P<pk>\d+)/$', views.addimg, name='addimg'), 

,那麼你需要接受你的觀點:

def addimg(request, pk): 
    ... 

,並用它來生成的鏈接模板:

<p><a class="btn btn-default" href="{% url "addimg" action.pk %}">Add Image &raquo;</a></p>