как зарегистрировать пользователей на тесты? - PullRequest
1 голос
/ 04 марта 2020

Вы можете мне помочь? Я не знаю django - ajax хорошо, также я новичок в django. Я хочу зарегистрировать пользователя на Mock test , поэтому я попытался использовать приведенные ниже коды. Я не могу понять, в чем мои ошибки. model.py

class MockTest(models.Model):
    name         = models.CharField(max_length=100)
    slug         = models.SlugField(unique=True)
    user         = models.ForeignKey(User, on_delete=models.CASCADE)
    bio          = models.TextField(null= True, blank=True)
    is_free      = models.BooleanField()
    fee          = models.DecimalField(max_digits=10, decimal_places=2) 
    time_created = models.DateTimeField(auto_now=False,auto_now_add=True)
    time_start   = models.DateField(auto_now=False, auto_now_add=False, default='')
    speak_date   = models.DateField(auto_now=False, auto_now_add=False, null=True, blank=True)

    registerations = models.ManyToManyField(User, blank=True, null=True, related_name='registerations')


    def save(self, *args, **kwargs): # new
        if not self.slug:
            self.slug = slugify(self.name)
        return super().save(*args, **kwargs)
    def __str__(self):
        return self.name

    def get_absolute_url(self):
        return reverse("teacher:mock_view", kwargs={"slug": self.slug})

    def total_registers(self):
        return self.registerations.count()

    def is_registered(self,request):
        return self.registerations.filter(id=request.user.id).exists()

views.py

def register(request):
    if request.method == 'POST':
        user = request.user
        slug = request.POST.get('slug', None)
        mock = get_object_or_404(MockTest, slug=slug)
        if mock.registerations.filter(id=user.id).exists():
            massage = "You are already registered"
        else:
            mock.registerations.add(user)
            massage = "succes"

    cxt = {'total_registers': mock.total_registers, 'massage':massage}
    return HttpResponse(json.dumps(cxt), content_type='application/json')

urls.py

path('register/', register, name='register')

html

<input type="button" id="register" class="" name="{{ mock.slug }}" value="Register" />
<script>
  $('#register').click(function(){
    $.ajax({
             type: "POST",
             url: "{% url 'student:register' %}",
             data: {'slug': $(this).attr('name'), 'csrfmiddlewaretoken': '{{ csrf_token }}'},
             dataType: "json",
             success: function(response) {
                    alert(response.message);
                    alert('Registered people now ' + response.total_registers);
              },
             error: function(rs, e) {
                    alert('Failed'); 
             }
        });
      })
</script>

Я думаю, мне нужны jQuery и JSON, но я не уверен, как это реализовать здесь, чтобы сделать моя собственная "регистрация" для моего сайта Есть какие-нибудь мысли / предложения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...