2013-07-19 2 views
26

Могу ли я иметь форму в шаблоне, которая не подкреплена моделью. Мне не нужно хранить данные, просто нужно, чтобы эти данные генерировали собственный запрос POST в представлении.Могу ли я иметь форму Django без модели

Шаблон - форма с текстовыми полями. Просмотр - получение данных из формы и генерация другого запроса.

Flow -> Форма представить берет на URL, которая вызывает вид "

def form_handle(request): 
    if request.method=='POST' 
    form = request.POST 

    #blah blah encode parameters for a url blah blah 
    #and make another post request 

, но это ставит только маркер CSRF в переменную форме Есть ли какой-нибудь способ, я могу получить доступ к этим текстовым полям. шаблон в моей form_handle зрения?

Я знаю, как сделать это с моделью, но не мог понять это!

ответ

37

Да. Это очень возможно. Вы можете прочитать на Form objects. было бы так же, как вы wo uld обрабатывают ModelForm, за исключением того, что вы не связаны моделью, и вы должны явно объявить все атрибуты формы.

def form_handle(request): 
    form = MyForm() 
    if request.method=='POST': 
     form = MyForm(request.POST) 
     if form.is_valid(): 
      cd = form.cleaned_data 
      #now in the object cd, you have the form as a dictionary. 
      a = cd.get('a') 

    #blah blah encode parameters for a url blah blah 
    #and make another post request 
    #edit : added ": " after if request.method=='POST' 

и

class MyForm(forms.Form): #Note that it is not inheriting from forms.ModelForm 
    a = forms.CharField(max_length=20) 
    #All my attributes here 

В шаблоне:

<form action="{% url form_handle %}" method="POST">{% csrf_token %} 
    {{form.as_p}} 
    <button type="submit">Submit</button> 
</form> 
+2

Awesome, полностью забывают forms.Form вещь. Это должно сработать! Благодаря!!! – AdRoiT

Смежные вопросы