Dive into Code

Discover code snippets, tutorials, and programming insights

Django

Django ajax post form

<p>The code you provided is a JavaScript/jQuery script that handles form submission and AJAX requests. It seems to be a client-side script that interacts with a server to handle form …

python
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
$('body').on('submit', 'form', function(e){
        e.preventDefault();
        $('input, select').removeClass('is-invalid');
        $( ".invalid-feedback" ).remove();
        var $form = $(this);
        var data = $form.serialize();
        var url_link = $form.attr('action');
        $.when($.ajax({
          url: url_link,
          data:data,
          method:  $form.attr('method'),
          datatype: 'json',
        })).then(function( response, textStatus, jqXHR ) {
        var obj = JSON.parse(response);
        console.info(obj)
        $('form')[0].reset();
        var app = obj[0].model.split('.')[0];
        var model = obj[0].model.split('.')[1];
        console.info("app:" + app);
        console.info("model:" + model);
        $("[id$='"+ model + "-list']").prepend("<li>" + obj[0].fields['name'] + "</li>");
      }).catch(function(err){
        $.each(err.responseJSON, function(index, value){
          console.info(index, value);
          $('#id_'+ index).addClass('is-invalid');
          $('#id_'+ index).after("<div class='invalid-feedback'>" + value + "</div>");
        });
      });
    })
Django

Django Ajax Mixin helpers

<p>These code snippets are mixins for Django views, allowing them to handle AJAX requests for displaying and processing data.</p> <ol> <li><code>AjaxListMixin</code>: This mixin is designed to handle AJAX requests for …

python
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
class AjaxListMixin:
    def get(self, request, *args, **kwargs):
        self.object_list = self.get_queryset()
        if request.is_ajax():
            data = serializers.serialize("json", self.object_list)
            return JsonResponse(data, safe=False)
        context = self.get_context_data()
        return self.render_to_response(context)


class AjaxFormMixin:
    def form_valid(self, form):
        form.save()
        if self.request.is_ajax():
            data = serializers.serialize("json", [form.instance])
            return JsonResponse(data, safe=False, status=200)
        return super().form_valid(form)

    def form_invalid(self, form):
        if self.request.is_ajax():
            return JsonResponse(form.errors, safe=False, status=400)
        return super().form_invalid(form)
Django

Django file validation

<p>The code provided seems to be a part of a Django form that handles file uploads for a model named <code>Document</code>. Let&#39;s break down the components of this code:</p> <ol> …

python
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
def file_size(value): # add this to some file where you can import it from
    limit = 2 * 1024 * 1024
    if value.size > limit:
        raise ValidationError('File Size is larger than 2 MiB.')


def validate_file_extension(value):
    import os
    from django.core.exceptions import ValidationError
    ext = os.path.splitext(value.name)[1]  # [0] returns path+filename
    valid_extensions = ['.pdf', '.docx']
    if not ext.lower() in valid_extensions:
        raise ValidationError('Unsupported file type')


class DocumentFileForm(BootstrapForm, forms.ModelForm):
    doc = forms.FileField(required=False, label='', help_text='', validators=[file_size, validate_file_extension])

    class Meta:
        model = Document
        fields = ('doc',)
Django

django m2m through models

<p>A Django model for a category system. This model defines two classes: <code>Category</code> and <code>ChildCategory</code>. Here&#39;s a brief explanation of each class and its fields:</p> <ol> <li> <p><code>Category</code> class:</p> <ul> …

python
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
from django.db import models


class Category(models.Model):
    name = models.CharField(max_length=100, unique=True)
    children = models.ManyToManyField('self', through='ChildCategory', symmetrical=False, blank=True)

    class Meta:
        default_related_name = 'categories'
        verbose_name = 'category'
        verbose_name_plural = 'categories'

    def __str__(self):
        return self.name


    @property
    def depth_level(self):
        depth = 0
        data = self.targets.all()
        while data:
            for item in data:
                data = item.source.targets.all()
            depth += 1
        return depth

    def breadcrumb(self):
        items = set()
        data = self.targets.all()
        if self.depth_level == 0:
            return items
        for item in data:
            items.add('{} > {}'.format(item.source, self))
        return items


class ChildCategory(models.Model):
    source = models.ForeignKey(Category, on_delete=models.CASCADE, related_name='sources')
    target = models.ForeignKey(Category, on_delete=models.CASCADE, related_name='targets')