【问题标题】:Django-autocomplete-url invalid URLDjango-autocomplete-url 无效的 URL
【发布时间】:2016-02-23 13:24:12
【问题描述】:

我正在尝试从机构列表中自动完成。我想我已经从 django-autocomplete-light tutotial 中包含了我需要的所有内容,但是我收到了这个错误,但不确定是什么原因造成的。希望你能帮忙。

错误是:

URL lookup for autocomplete 'InstitutionAutocomplete' failed. Have you included autocomplete_light.urls in your urls.py?

我的 django-autocomplete-light 文件夹与我的应用程序处于同一级别。还有另一个线程关于将它放在错误的目录中,但似乎所有文件都可以正确导入。不过不确定如何测试。

这是我的 urls.py:

import autocomplete_light
autocomplete_light.autodiscover()
admin.autodiscover()

url(r'^profile/add_user_accounts$', UserAccountsUpdate.as_view(), name='add_user_accounts'),
url(r'^profile/autocomplete$', include('autocomplete_light.urls'), name='autocomplete'),

这是我的 app/ 目录中的 auto_complete_light.py:

import autocomplete_light
from models import Institution

class InstitutionAutocomplete(autocomplete_light.AutocompleteModelBase):
    search_fields = ['^name', ]
    attrs={
        'placeholder': 'Find your institution',
        'data-autocomplete-minimum-characters': 1,
    }

autocomplete_light.register(Institution, InstitutionAutocomplete)

我的表格是:

class AddUserAccountsForm(forms.ModelForm):
    """
    Form for adding new user financial accounts.

    """
    required_css_class = 'required'
    user_institution_name = forms.ModelChoiceField(required=True, queryset=Institution.objects.all(), widget=autocomplete_light.ChoiceWidget('InstitutionAutocomplete'))
    user_accounts_name = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'User Name'}), label="")
    user_accounts_password = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'Password'}), label="")

    class Meta:
        model = User
        fields = ('user_institution_name','user_accounts_name', 'user_accounts_password', )

我的 HTML 是:

{% load staticfiles %}

<form action="" method="get" role="form">
    <input id="InstitutionsSearch" type="text" name="q" placeholder="Search for your institution" autocomplete="off">
</form> 

<form action="" method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <input type="submit" value="Sign In" />
    <input type="hidden" name="next" value="{{ next }}" />
</form>

{% endblock %}

【问题讨论】:

    标签: python django autocomplete django-autocomplete-light


    【解决方案1】:

    在您的 urls.py 文件中,尝试更改:

    url(r'^profile/autocomplete$', include('autocomplete_light.urls'), name='autocomplete')
    

    到这里:

    url(r'^profile/autocomplete$', include('autocomplete_light.urls', name='autocomplete'))
    

    可能需要namespace 而不是name,我不确定。

    【讨论】:

    • 我删除了名称只是为了检查,但我得到了同样的错误。
    【解决方案2】:

    问题是您已经用“$”终止了包含 URL,因此之后没有任何内容可以匹配。将其更改为:

    url(r'^profile/autocomplete', ...)
    

    没有$。

    请注意,最新版本的 Django 会在您执行此操作时发出警告。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-12
      • 2016-08-17
      • 1970-01-01
      • 1970-01-01
      • 2017-02-03
      • 1970-01-01
      • 2022-01-06
      • 2020-06-17
      相关资源
      最近更新 更多