Как установить поля формы html, не используя django-forms.django poplulate html form
ответ
Если вы не хотите использовать django.forms
, но получить данные из модели и отображать его в HTML-форму, вы могли бы сделать что-то вроде этого:
views.py
from django.shortcuts import render_to_response, redirect
from myApp.models import MyModel
def editForm(request, model_pk):
model = MyModel.objects.get(pk=model_pk)
return render_to_response('formUpdate.html',{ 'model' : model })
def updateForm(request, model_pk):
model = MyModel.objects.get(pk=model_pk)
model.firstname = request.POST['firstname']
model.lastname = request.POST['lastname']
model.save()
return redirect('home', message='your name has been updated')
шаблон - formUpdate.html
{% extends "base.html" %}
{% block content %}
<form action="/updateForm/{{ model.id }}/" method="post">
First name: <input type="text" name="firstname" value="{{ model.firstname }}" /><br />
Last name: <input type="text" name="lastname" value="{{ model.lastname }}" /><br />
<input type="submit" value="submit" />
</form>
{% end block %}
models.py
from django.db import models
class MyModel(models.Model):
firstname = models.CharField(max_length=20)
lastname = models.CharField(max_length=20)
urls.py
from django.conf.urls.defaults import *
urlpatterns = patterns('',
(r'^$', 'views.home', name="home"),
(r'^editForm/(?P<model_pk>\d+)/$', 'views.editForm'),
(r'^updateForm/(?P<model_pk>\d+)/$', 'views.updateForm'),
)
Это очень похоже на то, как формы обрабатываются в PHP или подобного, model
передается в шаблон, где существующие значения являются оказаны. id
или pk
(первичный ключ) модели передаются в представление через URL-адрес, а затем обновляются, а затем возвращаются в вид хранения в данных POST
, где они могут быть извлечены, и обновленные значения, хранящиеся в базе данных.
Одна из красот Django заключается в том, как она уравновешивает скорость разработки с возможностью подключения - в значительной степени любые ее части могут быть заменены или изменены.
Сказав это, есть причина, по которой вы не хотите использовать django.forms
? Насколько я понимаю, form
просто выполняет большую часть тяжелой работы в приведенном выше примере для вас, вот что такое django.forms
. У них также есть другие функции, которые помогают предотвратить вредоносный доступ к вашему веб-приложению, например, OOTB. Достаточно легко создать вспомогательные методы ajax для их извлечения и обновления.
», это именно то, что я хотел, спасибо. и очень удивительное объяснение. Я не хочу использовать django-forms, потому что я не хочу писать создание формы в html, поскольку дизайн был выполнен дизайнером ui. но, сказав, что формы django являются мощными, я обязательно рассмотрю ваше предложение. thanks agaub @Henry – rakesh
Возможно создание элементов формы html вручную, что позволяет полностью манипулировать дизайнером и по-прежнему использовать 'django.forms' везде в приложении. Я думаю, что последовательное именование элементов формы и полей модели/формы сделало бы это очень просто: см. Https://docs.djangoproject.com/en/dev/topics/forms/#customizing-the-form-template. –
Вы можете сделать это, как если бы вы создали обычную форму в html. Просто будьте осторожны, чтобы разместить {% csrf_token %}
. И name
input
в форме, так как они будут использоваться в представлении.
Например:
<form method="post" action="#the url for the view">
{% csrf_token %}
...
...
<!-- fields that you want Eg: -->
<label for="username">User name:</label>
<input type="text" name="username" id="username" />
...
...
<input type="submit" value="Submit" />
</form>
Надеется, что это помогло.
- 1. Django search html form
- 2. Настройка Django Form html id
- 3. Html form and Rest Api Django
- 4. Django Crispy Form отображает JSON как HTML
- 5. Django show ModelForm as html form
- 6. django getlist() from ajax html form
- 7. Django/JQuery Form Submission
- 8. Django form ValidationError
- 9. django create custom form
- 10. Django Embed Admin Form
- 11. Django form as GET
- 12. Django KeyError at/name/in Django Form
- 13. Ошибка проверки Django Form
- 14. Django Form Validation KeyError
- 15. Используя подмешать/функцию poplulate @import путей в Stylus
- 16. Django - Form Поле для изменения
- 17. Django multistep form wizard model form
- 18. django inline form validation
- 19. Django custom registration form
- 20. NoReverseMatch for Django form
- 21. django - NoReverseMatch form
- 22. django force form is_valid
- 23. django: form to json
- 24. Django ModelForm или Form
- 25. django model search form
- 26. Django Form не проверяет
- 27. Uniting Django Form media
- 28. Django Spreadsheet Form
- 29. Django form replicates data
- 30. django form variable
Ваш вопрос непонятен. Использование форм django хорошо объяснено в документации –
. Я изменил вопрос. – rakesh
«без использования django-forms» Почему вы хотите это сделать? – moenad