У меня есть простой класс формы с единственной областью определен:Джанго форма as_table(), as_p() методы не работают
class LaunchForm(forms.Form):
file_name = forms.FileField(required=True, label='File to import')
в моем шаблоне у меня есть:
<form action="" method="post">
{{ form.file_name }}
<table>
{{ form.as_table }}
</table>
{% csrf_token %}
<input type="submit" value="Submit">
</form>
Форма в настоящее время вызывается с точки зрения следующим образом:
class Application_Launch_View(View):
form_class = LaunchForm
template_name = 'application_launch.html'
def get(self, request, app_id):
form = self.form_class(application_id=app_id)
return render(request, self.template_name, {'form': form})
Я ставлю переменную {{}} form.file_name в шаблон, чтобы убедиться, что поле формы существует. Что появляется на странице в браузере (наряду со всеми другими вещами в шаблоне) составляет:
<django.forms.fields.FileField object at 0x032A08F0>
Но, кажется, не form.as_table быть приносит ничего.
Я пытался выдавать следующие вызовы функций сразу после создания экземпляра формы, на мой взгляд, как раз перед вызовом функции визуализации():
печати (form.file_name) печати (form.as_table())
в журнале отображается сервер:
<django.forms.fields.FileField object at 0x032A08F0>
Вслед за пробелом. Если я удалю вызов as_table(), пустое пространство НЕ появится. Я попытался заменить form.as_p() в представлении, но получить те же результаты, поэтому, похоже, оба метода, по крайней мере, выводят пару CR или CR/FL.
Похоже, что все работает, кроме as_table() и as_p() методы, и я не могу понять, почему ...
++++++++++ +++++++++
Изучая это немного глубже, я заметил, что другая форма, ссылаясь на объект поля Django на форме изнутри шаблона, не дает описания класса объекта как I выше, но ожидаемое поле формы.
Так что я должен спросить, в чем разница между двумя методами ниже для установки поля формы и существует ли способ сделать второй метод (в пределах __init__()
)?
Метод 1 (это работает):
class LaunchForm:
file_name = forms.FileField(required=True,
label='File to import',
initial='Default value')
Метод 2 (это не работает):
class LaunchForm:
def __init__(self, *args, **kwargs)
self.file_name = forms.FileField(required=True,
label='File to import',
initial='Default value')
Возможно, я должен был включить мой код вида - извините. Отредактировано, чтобы добавить это. Ваше предложение заставило меня вернуться и проверить, но да, я передаю экземпляр, а не класс. –
Вы дали мне понять, что здесь может быть не так, @ DanielRoseman. См. Мое дополнение выше. - –