iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 21
0
Modern Web

使用 Django 開發網頁系統系列 第 21

[Day 21] bootstrap 結合 forms.py 樣式

  • 分享至 

  • xImage
  •  

把前面講的實作一下 用 bootstrap form 樣式
用在 forms.py
bootstrap form class 用法
https://getbootstrap.com/docs/4.0/components/forms/#overview

都要給客製化的 class="form-contol"

store/forms.py

class ItemForm(forms.ModelForm):
    name = forms.CharField(label='名稱', widget=forms.TextInput(attrs={'class':'form-control'}))
    category = forms.ModelChoiceField(Category.objects.all(), label='類別', widget=forms.Select(attrs={'class':'form-control'}))
    description = forms.CharField(label='細節', widget=forms.Textarea(attrs={'class': 'tinymceTextarea'}))
    price = forms.IntegerField(label='價錢', widget=forms.NumberInput(attrs={'class':'form-control'}))

    class Meta:
        model = Item
        fields = ('name', 'category', 'description', 'price', )

可以用 for loop 在 form 上
就會把欄位forloop出來,順序是根據 forms.py fields

store/templates/shop/itemCreate.html

...
    {% for field in itemForm %}
      <div class="form-group">
        {{ field.label_tag }}
        {{ field }}
        {{ field.errors }}
      </div>
    {% endfor %}
...

給個 layout col
main/tempates/main/base.html

...
<div class="container">
<div class="row">
<div class="col">
{% block content %}

{% endblock %}
</div>
</div>
</div>
...

這樣 form html 就會產生了
示意圖

https://ithelp.ithome.com.tw/upload/images/20180107/20107183SuK3SK35UA.png

item 顯示
就不細講了
要講的地方是在item description 因為 html編輯器 會多 html tag ,所以資料庫會多 html tag
如果直接顯示的話會有tag

可以在templates 用 |safe
store/tempaltes/store/itemRead.html

{% extends 'main/base.html' %}

{% block content %}

  {% if item %}
    <p>{{ item.category.name }}</p>
    <p>{{ item.name }}</p>
    <p>{{ item.description|safe }}</p>
  {% endif %}

{% endblock %}

https://docs.djangoproject.com/en/2.0/ref/templates/builtins/#safe

就可以顯示了


上一篇
[Day 20] html 編輯器 tinyMCE
下一篇
[Day 22] 登入
系列文
使用 Django 開發網頁系統30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言