You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django模板变量传递时丢失空格后内容的问题求助

问题解决:表单隐藏字段含空格时仅传递首个单词

问题原因

你的模板中,隐藏输入框的value属性没有用引号包裹变量。当变量值包含空格(比如"test space space")时,HTML解析器会把第一个空格后的内容识别为新的HTML属性,导致实际提交给后端的value只有第一个单词。

修复方法

给所有input标签的value属性值加上双引号,确保完整的字符串被正确传递:

修改模板中表单部分的隐藏字段:

<input type="hidden" name="user_id" value="{{user_id}}">
<input type="hidden" name="auction_id" value="{{listing.id}}">
<input type="hidden" name="is_valid" value="True">
<input type="hidden" name="title" value="{{listing.title}}">

补充说明

  • 虽然数字类型的变量(比如user_id、listing.id)不加引号也能正常解析,但统一添加引号可以避免后续遇到字符串类型变量时再出现类似问题,是更规范的写法。
  • 你提到同一模板中其他位置使用该变量能正常显示,是因为普通文本输出不需要遵循HTML属性的解析规则,直接输出完整字符串即可。

原问题代码参考

视图代码

@login_required
def watchlist(request):
    user = request.user
    all_watched_auctions = WatchedAuction.objects.all()
    user_watched_auctions=all_watched_auctions.filter(user_id=user.id)
    if request.method == "POST" :
        auction_info = request.POST
        user_id = auction_info.get('user_id')
        auction_id = auction_info.get('auction_id')
        title = request.POST.get('title')
        # #creating a watched auction 
        auction_to_watch = WatchedAuction(user_id=user_id, auction_id=auction_id, is_watched=True, title=title)

        # #preventing duplicates
        if auction_id not in user_watched_auctions:
            auction_to_watch.save()

    test = user_watched_auctions.values_list("auction_id", flat=True)

    
    active_listings = Listing.objects.filter(status="ACTIVE")
    return render(request,"auctions/watchlist.html",{
        "watchlist" : test,
        "listings" : active_listings,
        "user" : user,
    })

模板代码(问题表单部分)

{% if listing.author_id != user_id and listing.status == "ACTIVE" %}
<form action="{% url 'watchlist' %}" method="post" value="test.id">
    {% csrf_token %}

    <input type="hidden" name="user_id" value={{user_id}}>
    <input type="hidden" name="auction_id" value={{listing.id}}>
    <input type="hidden" name="is_valid" value=True>
    <input type="hidden" name="title" value={{listing.title}}>
    <button type="submit"> add to watchlist</button>
        
    
</form>
{% endif %}

内容的提问来源于stack exchange,提问作者WalterBlack1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 20:15:50