چگونه در جنگو منوی بازشونده یا 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}}

 

نویسنده:تمدن

 

بدون دیدگاه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

مقالات
آموزش آپلود و نمایش تصویر و فایل در جنگو

سلام در این مطلب می خوام نحوۀ آپلود یا همان بارگذاری تصاویر و فایل ها در جنگو و سپس نمایش تصویر در صفحات رو بگم… آموزش های متنوع و متعددی در وب وجود داره که ممکنه بعضی هاش ناقص یا فقط به یک بخش پرداخته باشد.. از مقدمه پیداست که …

هرگونه استفادۀ از این آموزش به صورت رایگان و با ارجاع به تمدن جایز است.