如何将HTML中的信息发送到Django(后端)?

时间:2019-07-15 00:01:16

标签: html django python-3.x

如何将html中的单击链接或ComboBox中的选定信息发送给Django?

views.py

def musicList(request):
    musics = Song.objects.filter()
    print(musics)
    con = sqlite3.connect(str(request.user)+".db")
    cursor = con.cursor()
    cursor.execute("Select name From sqlite_master Where type='table';")
    tables = list()
    for i in cursor.fetchall():
        tables.append(i[0])
    context = {
        "musics":musics,
        "tables":tables,
    }
    return render(request,"musicList.html",context)

musicList.html

{% for music in musics %}
                    <tr>
                        <th scope="row">{{music.id}}</th>
                        <td>{{music.artist}}</td>
                        <td>{{music.song_name}}</td>
                        <td>{{music.song_type}}</td>
                        <td>{{music.owner}}</td>
                        <td>

                            <div class="dropdown">
                            <button type="button" class="btn btn-primary btn-sm dropdown-toggle" data-toggle="dropdown">
                                Choice a Music List
                            </button>
                            <div class="dropdown-menu">
                                {% for table in tables  %}
                                    <a class="dropdown-item" href="add_to_list/{{music.id}}" value="{{table}}">{{table}}</a>
                                {% endfor %}
                            </div>
                            </div>
                        </td>
                    </tr>

                {% endfor %}

如何将与用户从“下拉菜单”单击的链接的“值”相对应的值返回到views.py中的其他函数

1 个答案:

答案 0 :(得分:0)

有几种方法可以从模板到视图进行通信。

1。发布方法:

使用输入,复选框等及其值制作表单,然后在视图中检索值:

request.POST.get('value')

2。通过网址:

urls.py

urlpatterns = [
...
path('add_to_list/<int:music_id>/<str:value>', views.musicList, name='musicList'),
...
]

views.py

def detail(request, music_id, value):
...

官方文档here中有更高级的说明。

您也可以使用

查询参数:

localhost:8000 /?id = 123

request.GET.get('id')