2014-05-25 39 views
0

请帮忙解决问题。如何更改模板?

我做了一个上传照片的表单。

机型:

class UserProfile(User):    
    drum_photo = models.ImageField(
     'Фото инструмента', 
     upload_to='userprofile/drum_photo/', 
     blank=True, 
     null=True, 
    ) 

形式:

class DrumDataForm(forms.ModelForm):    
    class Meta: 
     model = UserProfile 
     fields = (
      'drum_photo', 
     ) 

template.html:

<div class="cell image_outer">   
    <label class="label">{{ form.drum_photo.label }}</label> 

    {{ form.drum_photo }} 

    {% if drum_photo %} 
     {% thumbnail drum_photo "230x230" crop="center" as im %} 
      <img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}"> 
     {% endthumbnail %}  
    {% endif %}     

    {{ form.drum_photo.errors }} 
</div> 

所得浏览器显示以下标记:

<div class="cell image_outer">   
    <label class="label">foto</label> 

    now: <a href="/media/userprofile/drum_photo/kYNP5kPnTOU_2.jpg">userprofile/drum_photo/kYNP5kPnTOU_2.jpg</a> <input id="drum_photo-clear_id" name="drum_photo-clear" type="checkbox"> <label for="drum_photo-clear_id">Clear</label><br>Изменить: <input id="id_drum_photo" name="drum_photo" type="file"> 

    <img src="/media/cache/0a/ca/0acac93baa399abad7d3c048ff20d5db.jpg" width="230" height="230"> 
</div> 

问题是我需要更改布局(添加或删除一些元素)。请告诉我你在哪里存储需要更改的模板?

+0

检查settings.py,应该有一个名为'TEMPLATE_DIRS'的设置,你会发现Django在哪里存储你的模板。然后,您应该检查用于呈现模板的实际视图的'views.py',更改模板会在渲染时更改它。 –

+0

否。模板的一部分,负责显示表单下载文件不在TEMPLATE_DIRS中。它在核心django中 – user3607370

回答

0

我想你在问什么是呈现表单域的模板在哪里。这由用于呈现字段的小部件控制。

Django的表单字段包含了两两件事:

  1. 的Widget
  2. 验证

的HTML和渲染是小工具的责任。 Django带有一个用于表单的collection of widgets。其中大部分都对应于正常的表单元素,但也有一些特殊的元素。

要自定义内容的HTML表单将输出,你需要定制部件用来渲染领域。

您的文件上传表单使用FileField,默认使用ClearableFileInput小部件。

每个小部件都采用可选的attrs参数,您可以使用该参数来控制呈现的元素的HTML属性。例如,如果我想改变宽度和高度:如果你想在你的表单字段更多的样式灵活看到新form assets部分,它允许您自定义用来样式表单CSS

class DrumDataForm(forms.ModelForm): 
    def __init__(self, *args, **kwargs): 
     super(DrumDataForm, self).__init__(*args, **kwargs) 
     self.fields['drum_photo'] = forms.FileUploadField(
             widget = forms.ClearableFileInput(
               attrs={'width': 200, 
                 'height': 300}))    
    class Meta: 
     model = UserProfile 

如需更多定制,您可以通过subclassing the base widget classes创建自己的小部件;或通过使用第三方库如django-crispy-forms