Django URL не работает с тегом привязки через ajax вызов - PullRequest
0 голосов
/ 30 апреля 2020

Я работаю над Python Django, и я создал представление, которое пишет и загружает CSV-файл. Теперь я закончил с типом, URL и данными в вызове ajax, а также передал функцию javascript в теге привязки. Теперь возникают проблемы, когда я нажимаю на кнопку, все данные показываются по тревоге, которые я хочу экспортировать в CSV, но нет загрузки CSV. URL загрузки генерируется в консоли. Когда я скопирую, вставьте этот URL в браузер и нажмите Enter, чтобы он успешно загрузил файл CSV и экспортировал все данные, которые я действительно хотел.

Основная проблема между тегом привязки и вызовом ajax в функции javascript. Любой разработчик может решить мою проблему?

views.py

class ServeCSV(ViewBase):
TEMPLATE_NAME = None
ACTION_ID = None

def get(self, request, *args, **kwargs):
    all_ids = request.GET['id']
    all_ids = json.loads(all_ids)
    data = models.TimeSheet.objects.filter(id__in=all_ids)
    print(data)

    '''
    print(type(request.GET['id']))
    data = query_cache.model_get_or_404(models.TimeSheet, qobj=Q(id__in=ids))
    t_id = int(kwargs.get('id'))
    data = query_cache.model_get_or_404(models.TimeSheet, qobj=Q(id=t_id))
    #progress = query_cache.progress_for_student(provider)
    #data = models.TimeSheet.objects.all()
    '''
    response = HttpResponse(content_type='text/csv')
    response[
        'Content-Disposition'
    ] = 'attachment; filename="timesheet.csv"'
    writer = csv.writer(response)
    writer.writerow(['TimeSheet info'])
    writer.writerow(
        [
            'Activity',
            'Client Initials',
            'Date',
            'Start Time',
            'End Time',
            'Hours',
            'Reviewed',
            'Description',
        ]
    )
    writer.writerow([])
    for rows in data:
        writer.writerow(
            [
                rows.activity.name,
                rows.client_initials,
                rows.date_display,
                rows.start_display,
                rows.end_display,
                rows.total_hours_str,
                rows.is_reviewed,
                rows.description,
            ]
        )

    return response
html

<a href="javascript: sendIDs({{ qs_ids }})">  //qs_ids render from dictionary in views
      <button type="button" class="btn btn-primary"><i class="fa fa-download"></i> Download Data </button>
</a>
javascript

<script>
  function sendIDs(ids){

    $.ajax({
                type: "GET",
                url: "{% url 'serve_csv' %}",
                data: { 'id':JSON.stringify(ids),'csrfmiddlewaretoken': '{{ csrf_token }}'},
                //dataType: 'json',
                success:function(data){
                  alert(data);
                }});
  }
</script>
Console

[30/Apr/2020 15:17:57] "GET /time/log/serve?id=%5B55%2C56%2C57%2C58%2C59%2C232%2C235%5D&csrfmiddlewaretoken=oC2brnKID41dp1K5ZvTP6EshRglkYLrLgqGMqrSOze2SWIDM5JXAmAxG1v6oCqoq HTTP/1.1" 200 760
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...