【问题标题】:Django forms not working on DigitalOcean ServerDjango 表单在 DigitalOcean Server 上不起作用
【发布时间】:2017-10-20 19:06:31
【问题描述】:

您好,我最近一直在尝试在 DigitalOcean Ubuntu 16.4 服务器上部署 Django Web 应用程序,最终能够使用 uWSGI、nginx 加载视图,并让加密以实现安全连接。我唯一的问题是:有一些视图依赖于提交 django 表单来根据与用户的距离检索对象(视图中的 GeoDjango 查询)。有问题的表格如下所示:

<form method= 'get' action="/foo/">{% csrf_token %}
        <input  id='latload'  type= 'number' step='any' value='0' name='latitude' style="display:none">
        <input  id='lonload'  type= 'number' step='any' value='0' name='longitude' style="display:none">




    <p id= 'walltext' >Here you can listen to the sounds in your area. To use your current location, click 
    </p>


    <input class="btn btn-success" type='submit' id='submit' value='here' style="color:#1d3b77; font-size: 25px; width: 100%;" disabled />
</form>

它从之前的 Javascript getLocation() 函数中获取 lat 和 long,然后通过表单传递给 /foo/ 视图,该表单按距离查询对象 (GeoDjango),如下所示:

def fetch_places_loc(request):
    lat= request.GET['latitude']
    lon= request.GET['longitude']
    finder_location = Point(float(lon),float(lat))

    nearby= Places.objects.filter(
        location__distance_lte=(
            finder_location,
            D(km=40))).distance(finder_location).order_by('distance').order_by('-rating__average')[:10]
    context= {
        'object_listboy': nearby,
        'title': 'wall',

    }
    return render(request, 'location/wall.html', context)

现在,在开发服务器上,它们一起工作并返回最近的 10 个对象。在 Git 将项目克隆到 DigitalOcean 服务器并配置 uWSGI、NGINX 并使用 let's encrypt 保护连接后,视图不会返回任何结果。它重定向到“墙”页面,列表中没有对象。我在浏览器控制台中没有收到任何类型的错误,并且所有 javascript 都在正常工作(使用 console.log() 返回 lat 和 long,并将其放入 Django 表单中)。任何对发生了什么有任何见解的人?我已经在网站上工作了一段时间,并且在接近完成时遇到了麻烦。我的直觉可能指向不正确的 nginx 服务器配置或其他东西。如果您想查看任何配置,请告诉我。

【问题讨论】:

    标签: python django forms deployment digital-ocean


    【解决方案1】:

    如果您在请求中没有收到 latitudelongitude,那么代码会像您所写的那样抛出错误 - request.GET['latitude']

    所以,我猜查询没有返回任何结果。您可以通过在服务器上使用 django shell 来调试它,然后在那里运行带有一些值的数据库查询。

    【讨论】:

      【解决方案2】:

      un display:none 并检查表单中是否有一些用 javascript 填充的数据,我很确定您必须允许网站对您进行地理定位

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-01-12
        • 2019-05-10
        • 2015-12-03
        • 2016-11-28
        • 2021-03-20
        • 2013-04-07
        • 1970-01-01
        相关资源
        最近更新 更多