چگونه در جنگو منوی بازشونده یا dropdown بسازیم؟ (فرم و مدل)
سلام
هدف این است که می خواهیم یک لیست بازشونده با تعداد محدودی اختیار را در فرم به کاربر نمایش دهیم. شاید این راه به ذهن برسد که فیلد را از نوع متنی در نظر می گیریم و در قسمت فرانت اند صرفاً گزینه های خود را به کاربر نمایش می دهیم که البته مسلماً این نمی تواند راه درستی باشد چون کاربر با اندکی تغییر می تواند هر داده ای را به سمت سرور ارسال کند. (کافی است فرم را tamper کند یا به صورت آنلاین html را تغییر دهد.)
راه حل بعدی این است که بعد از رسیدن داده به سرور نیز چک کنیم که دادۀ ارسالی صرفاً شامل موارد مجاز باشد و در غیر اینصورت درخواست را رد کنیم.
این راه صحیح است اما نیازی به این کار نیست؛ چون جنگو با استفاده از امکان choices
باعث شده به راحتی این کار انجام شود.
urls.py
url(r'^formpage$', home_views.formpageview, name='formpage'),
models.py
from django.db import models # Create your models here. CAT_CHOICES = ( ('academic','ACADEMIC'), ('poem', 'POEM'), ('novel','NOVEL'), ) class Book(models.Model): Category = models.CharField(max_length=11, choices=CAT_CHOICES, default='poem')
forms.py
from django import forms from .models import Book class MyModelForm(forms.ModelForm): class Meta: model = Book fields = ['Status']
views.py
from django.shortcuts import render from .models import Book from .forms import MyModelForm def formpageview(request): return render (request, 'template.html',{'form':MyModelForm})
template.html
<form action="" method="post">{% csrf_token %} {{ form.as_p }} <input type="submit" value="Create" /> </form>
برای نمایش صرفاً این فیلد هم از کد زیر استفاده می کنیم
{{ form.category}}
نویسنده:تمدن
دیدگاه خود را ثبت کنید
تمایل دارید در گفتگو شرکت کنید؟نظری بدهید!