Бросая ошибку, говоря, что контекст должен быть диктатом, а не - PullRequest
0 голосов
/ 16 января 2019

Я новичок в Джанго.Я хочу, чтобы эти данные передавались из view.py в .html для обработки данных из моделей.

Однако мне было трудно передать данные из view в htmlстр.Мой код, как показано ниже.

form.html

<!DOCTYPE html>
<meta charset="utf-8">
{% load staticfiles %}

<form method="post" action="../form/" enctype="multipart/form-data">
    {% csrf_token %}
    <input type="file" name="files" multiple/>
    <input type="submit" value="Upload"/>
</form>


<form method="post" action="../form/" enctype="multipart/form-data">
    {% csrf_token %}
    {% for c in column_name %}
    <tbody>
        <tr>
            <td>{{c}}</td>
            <td><input type="checkbox" name="columns" value="{{c}}"></td>
        </tr>
    </tbody>
    {% endfor %}
    {% if column_name %}
     <input type="submit" value="Submit">
    {% endif %}
</form>

<script>
var data = {{ columns_dict|safe }};
console.log(data);
</script>

views.py

def Form(request):
    if request.method == 'POST':
        if len(request.FILES) !=0:
            file = request.FILES['files']
            column_name = upload_file_name(file)
            return render(request,"index/form.html",{"column_name":column_name})
        else:
            columns = request.POST.getlist('columns')
            print(columns)
            columns_dict = dict(columns)
            print(columns_dict)
            return render(request,"index/form.html",json.dumps(columns))
    else:
        return render(request,"index/form.html",{})

Как вы можете видеть, я пытался передать данные в коде ниже.return render(request,"index/form.html",json.dumps(columns))

Однако на html-странице блок сценария

<script>
var data = {{ columns_dict|safe }};
console.log(data);
</script>

не может отображать данные из view.py.Я вижу ошибку ниже.context must be a dict rather than str.

Как решить мою проблему?

1 Ответ

0 голосов
/ 16 января 2019

Если вы хотите передать данные из вашего представления в шаблоне, вы должны передать данные в словаре.

def my_view(request):
   # statements
   return render('myhtml.html', {'data': json.dumps(data)})

Ссылка

...