Hi,
This issue is fixed to me by instantiating the FormHelper() in forms.py.
I referred :
https://django-crispy-forms.readthedocs.io/en/latest/crispy_tag_forms.html
class ApplyGSPForm(ModelForm):
* helper = FormHelper()*
class Meta:
model = ApplyGSP
fields = ['model_name', 'model_no', 'os_ver', 'chipset',
'patch_level_to_be_applied', 'rel_cycle',
'applied_gsp_count', 'from_sas_url', 'to_sas_url',
'def_src_manifest', 'from_sw_version',
'to_sw_version', 'description']
exclude = ['user', 'requested_time', 'applied_security_patch_level']
Regards,
N.Dilip Kumar.
On Monday, October 7, 2019 at 9:07:38 PM UTC+5:30, Dilipkumar Noone wrote:
>
> Dear Django User Group,
>
> I am django beginner.
>
> Please clarify the below doubt.
>
> *Implement Scenerio:*
> 1.I am developing one django app which needs a form on button click on
> html page.
> 2.on successful submission should display the object created in the list
> on the same web page.
>
> Below is the current implementation.
>
> when click on "Apply GSP" button getting below error:
> exc
>
> VariableDoesNotExist('Failed lookup for key [%s] in %r', ('helper',
> <ApplyGSPForm bound=False, valid=Unknown,
> fields=(model_name;model_no;os_ver;chipset;patch_level_to_be_applied;rel_cycle;applied_gsp_count;from_sas_url;to_sas_url;def_src_manifest;from_sw_version;to_sw_version;description)>))
>
> get_response
>
> <bound method BaseHandler._get_response of
> <django.core.handlers.wsgi.WSGIHandler object at 0x03FA61F0>>
>
> request
>
> <WSGIRequest: GET '/gspapp/ApplyGSPList/requestForm/'>
>
>
> *Note:* I am using bootstrap4 model using datatarget attribute to render
> the crispy form using django templates on button click.
>
> Please suggest how to resolve this issue.
>
> models.py:
> -----------
>
> class ApplyGSP(models.Model):
> """
> This class is used to Apply the GoogleSecurityPatches when the user
> requested to apply the GSP
> """
> user = models.CharField("User", max_length=100, default="")
> model_name = models.CharField(max_length=100, blank=True)
> model_no = models.CharField(max_length=100, blank=True)
> os_ver = models.ForeignKey(OSVersion, on_delete=models.CASCADE,
> verbose_name="os Version")
> chipset = models.ManyToManyField(Chipset)
> patch_level_to_be_applied = models.CharField(max_length=200, blank=True)
> rel_cycle = models.ForeignKey(ReleaseCycle, on_delete=models.CASCADE,
> verbose_name="Release Cycle")
> requested_time = models.DateTimeField(default=timezone.now)
> applied_gsp_count = models.IntegerField(null=True)
> applied_security_patch_level = models.TextField(default="")
> from_sas_url = models.ForeignKey(SourceSASURL, on_delete=models.CASCADE,
> verbose_name="Source SAS URL")
> to_sas_url = models.URLField()
> def_src_manifest = models.ManyToManyField(DefaultSrcManifest)
> # from_manifest = models.CharField(max_length=200)
> # to_manifest = models.CharField(max_length=200)
> from_sw_version = models.IntegerField(null=True)
> to_sw_version = models.IntegerField(null=True)
> description = models.CharField(max_length=200)
>
> class Meta:
> verbose_name_plural = "ApplyGSPPatches"
>
> def __str__(self):
> return self.user + str(self.pk)
>
>
> forms.py:
> ----------
>
> class ApplyGSPForm(ModelForm):
> """
> This class is used to define the form input fields to apply the
> google security patches for each user request
> from common SAS board:7620
> """
>
> class Meta:
> model = ApplyGSP
>
> fields = ['model_name', 'model_no', 'os_ver', 'chipset',
> 'patch_level_to_be_applied', 'rel_cycle',
> 'applied_gsp_count', 'from_sas_url', 'to_sas_url',
> 'def_src_manifest', 'from_sw_version',
> 'to_sw_version', 'description']
> exclude = ['user', 'requested_time', 'applied_security_patch_level']
>
>
> ApplyGSP.html:
> -------------------
>
> <!DOCTYPE html>
> {% extends 'base.html' %}
> {% load crispy_forms_tags %}
>
> {% block static %}
> {% endblock static %}
>
> {% block content %}
> <div class="float-md-left">
> <div class="page-header">
> <a href="{%url 'gspapp:ApplyGSPRequestForm' %}">
> <button type="button" class="btn-primary btn-sm"
> data-toggle="modal" data-target="#myApplyGSPModal"><span class="fas
> fa-plus"></span>ApplyGSP</button>
> </a>
> </div>
> <div id="#myApplyGSPModal" class="model fade" role="dialog">
> <form method="POST" action="">
> <!-- The below CSRF Token makes form Secure -->
> {% csrf_token %}
> <div class="container">
> <!-- {% crispy form form.helper 'bootstrap' %} -->
> {% crispy form %}
> <button type="submit" class="btn btn-primary">
> {% if action == "submit" %}
> <span class="fas fa-plus"></span>Submit
> {% else %}
> <span class="fas fa-edit"></span>Update
> {% endif %}
> </button>
> <button type="reset" class="btn btn-primary"
> aria-label="Close" data-dismiss="modal">
> <span aria-hidden="true">×</span>Cancel
> </button>
> </div>
> </form>
> </div>
> </div>
> {% endblock content %}
>
> {% block scripts %}
> {% endblock scripts %}
>
>
> Myviews.py:
>
> @login_required(login_url='/gspapp/')
> def apply_gsp_request_form(request, id=None):
> """
> :param request: Accept http request
> :param id: Id of Requested User record
> :return: http response
> """
> print("Inside Apply Google Security Patch Form:", id)
> print("request:", request.method)
>
> if id:
> action = 'edit'
> model = get_object_or_404(ApplyGSP, pk=id)
> else:
> action = 'submit'
> model = ApplyGSP()
>
> message = ""
>
> if request.method == 'POST':
> form = ApplyGSPForm(request.POST, instance=model)
>
> if form.is_valid():
> new_apply_gsp_request = form.save(commit=False)
> new_apply_gsp_request.user = request.user
> new_apply_gsp_request.save()
> return HttpResponseRedirect('/gspapp/ApplyGSPList')
>
> else:
> print("when the request is GET inside ApplyGSPForm")
> form = ApplyGSPForm(instance=model)
>
> context = {'form': form, 'Message': message, 'action': action}
> return render(request, 'ApplyGSP.html', context)
>
>
> *My urls.py:*
>
> urlpatterns = [
> re_path(r'^download/(?P<id>\d+)/$', views.download_filtered_gsp_patches,
> name='GSPExtractFilter'),
> path('ApplyGSPList/', login_required(views.ApplyGSPList.as_view(),
> login_url='/gspapp/login/'), name='ApplyGSPList'),
> path('ApplyGSPList/requestForm/', views.apply_gsp_request_form,
> name='ApplyGSPRequestForm'),
> re_path(r'^editApplyGSP/requestForm/(?P<id>\d+)/$',
> views.apply_gsp_request_form, name='editApplyGSP'),
> path('GSPReview/', views.gspreview, name='GSPReview'),
>
>
>
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-users/9e0220da-b804-4b69-8bd3-b94c1702c04a%40googlegroups.com.