2014-05-25 38 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