Django Crispy Forms Rendering Issue 'cannot convert dictionary update sequence element #0 to a sequence' -
struggling figure 1 out. i've seen several issues error code shows seem have data not being passed context template render. know data getting through template. crispy forms must doing behind scenes throwing me off? weird thing literally worked 20 minutes ago. don't know have changed have affected this.
here view:
class contactlistview(view): template = 'support_tracker/contact_list.html' def get(self,request,*args,**kwargs): staff_id = kwargs.pop('staff_id',false) if staff_id: staff = staff.objects.get(pk=staff_id) else: staff = request.user.staff contact_list = staff.contacts.all() search_term = request.get.get('search_term',false) sort_by = request.get.get('sort_by',false) filter_by = request.get.get('filter_by',false) ##applying search term determine contact_list ... ## ##sorting of contact_list .... ## ##filtering of contact_list .... ## search_form = searchform() sort_form = contactlistsortform() filter_form = filterbystageform() ##pagination determine contacts ... ## context = { 'staff':staff, 'contacts':contacts, 'search_form':search_form, 'sort_form':sort_form, 'filter_form':filter_form, 'filter_by':filter_by, 'search_term':search_term, 'sort_by':sort_by, } print context return render(request,self.template,context)
my forms:
##forms.py class searchform(forms.form): search_term = forms.charfield(max_length=30,label='') def __init__(self,*args,**kwargs): super(searchform,self).__init__(*args,**kwargs) self.helper = formhelper() self.helper.form_class = 'form-inline' self.helper.form_method = 'get' self.helper.field_template = 'bootstrap3/layout/inline_field.html' self.helper.layout = layout( inlinefield('search_term',placeholder='search'), submit('','go',css_class='btn btn-primary'), ) class filterbystageform(forms.form): filter_by = forms.choicefield(choices=get_stage_option_list(),required=false) def __init__(self,*args,**kwargs): super(filterbystageform,self).__init__(*args,**kwargs) self.helper = formhelper() self.helper.form_class = 'form-inline' self.helper.form_method = 'get' self.helper.field_template = 'bootstrap3/layout/inline_field.html' self.helper.layout = layout( inlinefield('filter_by',placeholder='filter by'), submit('','filter',css_class='btn btn-primary'), ) class contactlistsortform(forms.form): sort_by = forms.choicefield(choices=(##options),required=false) def __init__(self,*args,**kwargs): super(contactlistsortform,self).__init__(*args,**kwargs) self.helper = formhelper() self.helper.form_class = 'form-inline' self.helper.form_method = 'get' self.helper.field_template = 'bootstrap3/layout/inline_field.html' self.helper.layout = layout( inlinefield('sort_by',placeholder='sort by'), submit('','sort',css_class='btn btn-primary'), )
my template:
{% extends 'co_tools/base.html' %} {% load crispy_forms_tags %} {% block content %} <div class='container'> <div class='col-md-3 well'> <h3><u>search:</u></h3> ## part trips up. if take forms out, rest of page loads fine {% crispy search_form %} {% crispy sort_form %} {% crispy filter_form %} <a href='/support/new_contact/' class='btn btn-primary'>new contact</a> </div> ...body... </div> {% endblock content %}
the full traceback
request method: request url: http://127.0.0.1:8000/support/contact_list/ django version: 1.10.2 python version: 2.7.11 installed applications: ['django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'crispy_forms', 'support_tracker', 'donor_reports', 'staff', 'financial_reports'] installed middleware: ['django.middleware.security.securitymiddleware', 'django.contrib.sessions.middleware.sessionmiddleware', 'django.middleware.common.commonmiddleware', 'django.middleware.csrf.csrfviewmiddleware', 'django.contrib.auth.middleware.authenticationmiddleware', 'django.contrib.messages.middleware.messagemiddleware', 'django.middleware.clickjacking.xframeoptionsmiddleware'] template error: in template c:\...\project\support_tracker\templates\support_tracker\contact_list.html, error @ line 8 cannot convert dictionary update sequence element #0 sequence 1 : {% extends 'co_tools/base.html' %} 2 : {% load crispy_forms_tags %} 3 : 4 : {% block content %} 5 : <div class='container'> 6 : <div class='col-md-3 well'> 7 : <h3><u>search:</u></h3> 8 : {% crispy form %} 9 : <a href='/support/new_contact/' class='btn btn-primary'>new contact</a> 10 : </div> 11 : <div class='col-md-9'> 12 : <table class='table table-condensed table-hover'> 13 : <thead> 14 : <th>contact name</th> 15 : <th>phone number</th> 16 : <th>email</th> 17 : <th>street address</th> 18 : <th>city</th> traceback: file "c:\...\project\env\lib\site-packages\django\core\handlers\exception.py" in inner 39. response = get_response(request) file "c:\...\project\env\lib\site-packages\django\core\handlers\base.py" in _get_response 187. response = self.process_exception_by_middleware(e, request) file "c:\...\project\env\lib\site-packages\django\core\handlers\base.py" in _get_response 185. response = wrapped_callback(request, *callback_args, **callback_kwargs) file "c:\...\project\env\lib\site-packages\django\views\generic\base.py" in view 68. return self.dispatch(request, *args, **kwargs) file "c:\...\project\env\lib\site-packages\django\views\generic\base.py" in dispatch 88. return handler(request, *args, **kwargs) file "c:\...\project\support_tracker\views.py" in 185. return render(request,self.template,context) file "c:\...\project\env\lib\site-packages\django\shortcuts.py" in render 30. content = loader.render_to_string(template_name, context, request, using=using) file "c:\...\project\env\lib\site-packages\django\template\loader.py" in render_to_string 68. return template.render(context, request) file "c:\...\project\env\lib\site-packages\django\template\backends\django.py" in render 66. return self.template.render(context) file "c:\...\project\env\lib\site-packages\django\template\base.py" in render 208. return self._render(context) file "c:\...\project\env\lib\site-packages\django\template\base.py" in _render 199. return self.nodelist.render(context) file "c:\...\project\env\lib\site-packages\django\template\base.py" in render 994. bit = node.render_annotated(context) file "c:\...\project\env\lib\site-packages\django\template\base.py" in render_annotated 961. return self.render(context) file "c:\...\project\env\lib\site-packages\django\template\loader_tags.py" in render 174. return compiled_parent._render(context) file "c:\...\project\env\lib\site-packages\django\template\base.py" in _render 199. return self.nodelist.render(context) file "c:\...\project\env\lib\site-packages\django\template\base.py" in render 994. bit = node.render_annotated(context) file "c:\...\project\env\lib\site-packages\django\template\base.py" in render_annotated 961. return self.render(context) file "c:\...\project\env\lib\site-packages\django\template\loader_tags.py" in render 70. result = block.nodelist.render(context) file "c:\...\project\env\lib\site-packages\django\template\base.py" in render 994. bit = node.render_annotated(context) file "c:\...\project\env\lib\site-packages\django\template\base.py" in render_annotated 961. return self.render(context) file "c:\...\project\env\lib\site-packages\crispy_forms\templatetags\crispy_forms_tags.py" in render 215. c = self.get_render(context) file "c:\...\project\env\lib\site-packages\crispy_forms\templatetags\crispy_forms_tags.py" in get_render 126. response_dict = self.get_response_dict(helper, context, is_formset) file "c:\...\project\env\lib\site-packages\crispy_forms\templatetags\crispy_forms_tags.py" in get_response_dict 160. attrs = helper.get_attributes(template_pack=self.template_pack) file "c:\...\project\env\lib\site-packages\crispy_forms\helper.py" in get_attributes 364. if self.form_action: file "c:\...\project\env\lib\site-packages\crispy_forms\helper.py" in form_action 237. return reverse(self._form_action) file "c:\...\project\env\lib\site-packages\django\urls\base.py" in reverse 91. return force_text(iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs))) file "c:\...\project\env\lib\site-packages\django\urls\resolvers.py" in _reverse_with_prefix 344. self._populate() file "c:\...\project\env\lib\site-packages\django\urls\resolvers.py" in _populate 217. dict(defaults, **pattern.default_kwargs), exception type: typeerror @ /support/contact_list/ exception value: cannot convert dictionary update sequence element #0 sequence
i have no idea causing this. appreciated.
ok solved issue. have no clue why particular bit of code causing problem though.
in urls.py, had added following 4 url expressions...
from django.conf.urls import url, include import views
urlpatterns = [ ... #meeting urls url(r'^record_meeting/(?p<meeting_id>[0-9]+)/',views.editmeetingview.as_view(),{'record':true}), url(r'^record_meeting/$',views.editmeetingview.as_view(),{'record':true}), url(r'^edit_meeting/(?p<meeting_id>[0-9]+)/',views.editmeetingview.as_view(),{'record':false}), url(r'^add_meeting/$',views.editmeetingview.as_view()), ]
the fourth 1 url(r'^add_meeting/$',views.editmeetingview.as_view(),{'record':false})
, apparently, based on trial , error, causing issue. after removing additional arguments, problem went away. know why issue in first place? still don't understand.
Comments
Post a Comment