代码之家  ›  专栏  ›  技术社区  ›  Axil

django地图小部件控制台显示DjangoGooglePointFieldWidget未捕获引用错误

  •  6
  • Axil  · 技术社区  · 7 年前

    我正在尝试实现django地图小部件 https://github.com/erdem/django-map-widgets

    但是没有出现地图,我在浏览器控制台中有这个

    Uncaught ReferenceError: DjangoGooglePointFieldWidget is not defined
    

    在设置中。py,我有

    INSTALLED_APPS = [
    ...
        'mapwidgets',
    ]
    
    MAP_WIDGETS = {
        "GoogleStaticMapWidget": (
            ("zoom", 15),
            ("size", "320x320"),
        ),
        "GoogleStaticMapMarkerSettings": (
            ("color", "green"),
        ),
        "GOOGLE_MAP_API_KEY": "AIzaSyA1fXsJSKqZH_Bl9d9wueJMlpXd-6tEJy0"
    }
    

    在我的模型中。py公司

    class CompanySettingEdit(forms.ModelForm):
         display_companyname = forms.CharField(label='Display Company Name', max_length=50, required=True)
        class Meta:
            model = Company
            fields = ("display_companyname","location_point")
    
            widgets = {
                'location_point': GooglePointFieldWidget,
            }
    

    更新: 设置中的我的静态文件配置。py公司

    STATIC_URL = '/static/'
    
    STATICFILES_DIRS = (
        os.path.join(BASE_DIR, "../projectapp/static"),
    )
    
    PROJECT_DIR = os.path.dirname(os.path.abspath(__file__))
    STATIC_ROOT = os.path.join(PROJECT_DIR, '../../../static_root')
    

    运行python manage之后。py collectstatic,静态文件复制到另一个目录static\u root- https://imgur.com/a/TmhYr . 请注意,mapwidgets目录不在原始项目静态目录中。我正在运行开发,我注意到引导静态文件使用的是静态目录中的文件,而不是static\u root

    我错过什么了吗?我需要加载模板中的任何内容吗?

    2 回复  |  直到 7 年前
        1
  •  5
  •   Adelin    7 年前

    was encountered before . 可能的解决方案:

    1. 确保你跑步 python manage.py collectstatic 以便将第三方静态文件复制到 STATIC_ROOT (更多信息请参见 their readme )
    2. 如果您在开发模式下运行,则必须为添加静态文件以服务于视图 urls (辅助链接 #1 #2 )
    3. 确保模板也具有 {{form.media}} 在某处 <head> 或者在你的 <body> 在基础html中添加标记。( example )
        2
  •  1
  •   Axil    7 年前

    实际上,没有人要求提供模板。 基于此 https://docs.djangoproject.com/en/2.0/topics/forms/media/ 这就是形式。做了这件事的媒体。我没有使用我自己的表单名称。媒体通话。

    这是我的html模板文件,其中包含用于显示地图的字段。

    {% extends 'employee/base.html' %}
    {% load bootstrap3 %}
    
    {% block page %}
      <div class="col-lg-12">
        <div class="panel">
          <div class="panel-heading bg-blue">
            <h4 class="panel-title text-center text-white">
              Company Settings
            </h4>
          </div>
            <div class="panel-body">         
              {{ companysetting_form.media }} <--- this did the trick
              <h4>Company Login Name: <a href="{% url 'employee-companychangename' %}">{{ request.user.employee.company.companyname }}</a></h4> 
              <form method="POST" enctype="multipart/form-data">
                {% csrf_token %}            
                {% bootstrap_form companysetting_form %}
                <button type="submit" class="btn btn-pink">Update</button>
              </form>
    
            </div>
          </div>
        </div>
    {% endblock %}