2016-01-31 44 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>