# Cannot replicate error between local and remote machine

**URL:** <https://forum.djangoproject.com/t/cannot-replicate-error-between-local-and-remote-machine/37438>\
**Category:** Mystery Errors\
**Created:** [December 23, 2024, 7:59pm UTC](https://forum.djangoproject.com/t/cannot-replicate-error-between-local-and-remote-machine/37438 "2024-12-23T19:59:53Z")\
**Posts on this page:** 13\
**Page:** 1

<div class="post-metadata">

**Author:** ![mariostg](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.djangoproject.com/mariostg/32/10901_2.png) [@mariostg](https://forum.djangoproject.com/u/mariostg)\
**Post date:** [December 23, 2024, 7:59pm UTC](https://forum.djangoproject.com/t/cannot-replicate-error-between-local-and-remote-machine/37438/1 "2024-12-23T19:59:53Z")

</div>

I have code on my laptop that works fine, but when I migrate it to my nginx/gunicorn system, I get error “cannot unpack non-iterable NoneType object”. On the form, there are several input choices originating from models. Those work fine. There are two inputchoices that rely on dict and they seem to be the culprit. If I remove them from the template, there are no errors.

```auto
def search_plant(request):
    has_filter = False
    if not request.GET:
        data = models.PlantProfile.objects.none()
    else:
        data = models.PlantProfile.objects.all().order_by("latin_name")
        has_filter = True
    search_filter = filters.PlantProfileFilter(request.GET, queryset=data)
    object_list = search_filter.qs.annotate( #this subquery is from Ken
        is_owner=Coalesce( 
            Subquery(
                models.PlantCollection.objects.filter(owner=request.user, plants=OuterRef("pk"))
                .annotate(owns=Value("Yes"))
                .values("owns")
            ),
            Value("No"),
        )
    )
    return render(
        request,
        "project/search-plant.html",
        {
            "filter": search_filter, #No error if I comment this.
            "object_list": object_list,
            "has_filter": has_filter,
            "url_name": "search-plant",
            "title": "Plant Profile Filter",
        },
    )

```

Problematic filters:

```auto
    bloom_start = django_filters.ChoiceFilter(
        choices=utils.MONTHS,
        method="filter_gte",
    )
    bloom_end = django_filters.ChoiceFilter(
        choices=utils.MONTHS,
        method="filter_lte",
    )
    harvesting_start = django_filters.ChoiceFilter(
        choices=utils.MONTHS,
        method="filter_gte",
    )
    harvesting_end = django_filters.ChoiceFilter(
        choices=utils.MONTHS,
        method="filter_lte",
    )

```

utils.MONTHS is just a dict

```auto
MONTHS = {
    None: "",
    1: "January",
    2: "February",
    3: "March",
    4: "April",
    5: "May",
    6: "June",
    7: "July",
    8: "August",
    9: "September",
    10: "October",
    11: "November",
    12: "December",
}

```

It’s a nightmare to troubleshoot this on remote server and I simply wish I could get the error on my local machine.

The error is caused by something with the {{filter.form.light\_to}} which appear to be non-iterable

```auto
            <div class="flex-col">
                <div class="title">Sun Requirement</div>
                <div class="light-range__inputs">
                    <div class="form__field"><label class="form-label">Max</label>{{filter.form.light_from}}</div>
                    <div class="form__field"><label class="form-label">Min</label>{{filter.form.light_to}}</div>
                </div>
            </div>

```

---

<div class="post-metadata">

**Author:** ![philgyford](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.djangoproject.com/philgyford/32/14295_2.png) [@philgyford](https://forum.djangoproject.com/u/philgyford)\
**Post date:** [December 23, 2024, 8:13pm UTC](https://forum.djangoproject.com/t/cannot-replicate-error-between-local-and-remote-machine/37438/2 "2024-12-23T20:13:02Z")

</div>

Can you provide the full stack trace, not just that bit of the error?

---

<div class="post-metadata">

**Author:** ![mariostg](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.djangoproject.com/mariostg/32/10901_2.png) [@mariostg](https://forum.djangoproject.com/u/mariostg)\
**Post date:** [December 24, 2024, 1:21am UTC](https://forum.djangoproject.com/t/cannot-replicate-error-between-local-and-remote-machine/37438/3 "2024-12-24T01:21:27Z")

</div>

Sure, here it is.  
Now I wonder if it could be a Django version issue. My local machine is on Django 5.1.3

Environment:

```auto
Request Method: GET

Django Version: 4.2.16
Python Version: 3.9.2
Installed Applications:
['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'django.forms',
 'django_browser_reload',
 'project']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware',
 'django_browser_reload.middleware.BrowserReloadMiddleware']

Template error:
In template /home/mariost-gelais/owsl.mariostg.com/project/templates/project/search-form.html, error at line 33
   cannot unpack non-iterable NoneType object
   23 : <div class="flex-col">
   24 : <div class="title">Humidity Range</div>
   25 : <div class="humidity-range__inputs">
   26 : <div class="form__field"><label class="form-label">Min</label>{{filter.form.soil_humidity_min}}</div>
   27 : <div class="form__field"><label class="form-label">Max</label>{{filter.form.soil_humidity_max}}</div>
   28 : </div>
   29 : </div>
   30 : <div class="flex-col">
   31 : <div class="title">Bloom Period</div>
   32 : <div class="humidity-range__inputs">
   33 : <div class="form__field"><label class="form-label">Start</label> {{filter.form.bloom_start}} </div>
   34 : <div class="form__field"><label class="form-label">End</label>{{filter.form.bloom_end}}</div>
   35 : </div>
   36 : </div>
   37 : <div class="flex-col">
   38 : <div class="title">Harvesting Period</div>
   39 : <div class="humidity-range__inputs">
   40 : <div class="form__field"><label class="form-label">Start</label>{{filter.form.harvesting_start}}</div>
   41 : <div class="form__field"><label class="form-label">End</label>{{filter.form.harvesting_end}}</div>
   42 : </div>
   43 : </div>

Traceback (most recent call last):
  File "/home/mariost-gelais/owsl.mariostg.com/.venv-owsl/lib/python3.9/site-packages/django/core/handlers/exception.py", line 55, in inner
    response = get_response(request)
  File "/home/mariost-gelais/owsl.mariostg.com/.venv-owsl/lib/python3.9/site-packages/django/core/handlers/base.py", line 197, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/home/mariost-gelais/owsl.mariostg.com/project/views.py", line 130, in search_plant
    return render(
  File "/home/mariost-gelais/owsl.mariostg.com/.venv-owsl/lib/python3.9/site-packages/django/shortcuts.py", line 24, in render
    content = loader.render_to_string(template_name, context, request, using=using)
  File "/home/mariost-gelais/owsl.mariostg.com/.venv-owsl/lib/python3.9/site-packages/django/template/loader.py", line 62, in render_to_string
    return template.render(context, request)
  File "/home/mariost-gelais/owsl.mariostg.com/.venv-owsl/lib/python3.9/site-packages/django/template/backends/django.py", line 61, in render
    return self.template.render(context)
  File "/home/mariost-gelais/owsl.mariostg.com/.venv-owsl/lib/python3.9/site-packages/django/template/base.py", line 175, in render
    return self._render(context)
  File "/home/mariost-gelais/owsl.mariostg.com/.venv-owsl/lib/python3.9/site-packages/django/test/utils.py", line 112, in instrumented_test_render
    return self.nodelist.render(context)
  File "/home/mariost-gelais/owsl.mariostg.com/.venv-owsl/lib/python3.9/site-packages/django/template/base.py", line 1005, in render
    return SafeString("".join([node.render_annotated(context) for node in self]))
  File "/home/mariost-gelais/owsl.mariostg.com/.venv-owsl/lib/python3.9/site-packages/django/template/base.py", line 1005, in <listcomp>
    return SafeString("".join([node.render_annotated(context) for node in self]))
  File "/home/mariost-gelais/owsl.mariostg.com/.venv-owsl/lib/python3.9/site-packages/django/template/base.py", line 966, in render_annotated
    return self.render(context)
  File "/home/mariost-gelais/owsl.mariostg.com/.venv-owsl/lib/python3.9/site-packages/django/template/loader_tags.py", line 157, in render
    return compiled_parent._render(context)
  File "/home/mariost-gelais/owsl.mariostg.com/.venv-owsl/lib/python3.9/site-packages/django/test/utils.py", line 112, in instrumented_test_render
    return self.nodelist.render(context)
  File "/home/mariost-gelais/owsl.mariostg.com/.venv-owsl/lib/python3.9/site-packages/django/template/base.py", line 1005, in render
    return SafeString("".join([node.render_annotated(context) for node in self]))
  File "/home/mariost-gelais/owsl.mariostg.com/.venv-owsl/lib/python3.9/site-packages/django/template/base.py", line 1005, in <listcomp>
    return SafeString("".join([node.render_annotated(context) for node in self]))
  File "/home/mariost-gelais/owsl.mariostg.com/.venv-owsl/lib/python3.9/site-packages/django/template/base.py", line 966, in render_annotated
    return self.render(context)
  File "/home/mariost-gelais/owsl.mariostg.com/.venv-owsl/lib/python3.9/site-packages/django/template/loader_tags.py", line 63, in render
    result = block.nodelist.render(context)
  File "/home/mariost-gelais/owsl.mariostg.com/.venv-owsl/lib/python3.9/site-packages/django/template/base.py", line 1005, in render
    return SafeString("".join([node.render_annotated(context) for node in self]))
  File "/home/mariost-gelais/owsl.mariostg.com/.venv-owsl/lib/python3.9/site-packages/django/template/base.py", line 1005, in <listcomp>
    return SafeString("".join([node.render_annotated(context) for node in self]))
  File "/home/mariost-gelais/owsl.mariostg.com/.venv-owsl/lib/python3.9/site-packages/django/template/base.py", line 966, in render_annotated
    return self.render(context)
  File "/home/mariost-gelais/owsl.mariostg.com/.venv-owsl/lib/python3.9/site-packages/django/template/loader_tags.py", line 208, in render
    return template.render(context)
  File "/home/mariost-gelais/owsl.mariostg.com/.venv-owsl/lib/python3.9/site-packages/django/template/base.py", line 177, in render
    return self._render(context)
  File "/home/mariost-gelais/owsl.mariostg.com/.venv-owsl/lib/python3.9/site-packages/django/test/utils.py", line 112, in instrumented_test_render
    return self.nodelist.render(context)
  File "/home/mariost-gelais/owsl.mariostg.com/.venv-owsl/lib/python3.9/site-packages/django/template/base.py", line 1005, in render
    return SafeString("".join([node.render_annotated(context) for node in self]))
  File "/home/mariost-gelais/owsl.mariostg.com/.venv-owsl/lib/python3.9/site-packages/django/template/base.py", line 1005, in <listcomp>
    return SafeString("".join([node.render_annotated(context) for node in self]))
  File "/home/mariost-gelais/owsl.mariostg.com/.venv-owsl/lib/python3.9/site-packages/django/template/base.py", line 966, in render_annotated
    return self.render(context)
  File "/home/mariost-gelais/owsl.mariostg.com/.venv-owsl/lib/python3.9/site-packages/django/template/base.py", line 1070, in render
    return render_value_in_context(output, context)
  File "/home/mariost-gelais/owsl.mariostg.com/.venv-owsl/lib/python3.9/site-packages/django/template/base.py", line 1047, in render_value_in_context
    value = str(value)
  File "/home/mariost-gelais/owsl.mariostg.com/.venv-owsl/lib/python3.9/site-packages/django/utils/html.py", line 469, in <lambda>
    klass. __str__ = lambda self: mark_safe(klass_str(self))
  File "/home/mariost-gelais/owsl.mariostg.com/.venv-owsl/lib/python3.9/site-packages/django/forms/boundfield.py", line 34, in __str__
    return self.as_widget()
  File "/home/mariost-gelais/owsl.mariostg.com/.venv-owsl/lib/python3.9/site-packages/django/forms/boundfield.py", line 107, in as_widget
    return widget.render(
  File "/home/mariost-gelais/owsl.mariostg.com/.venv-owsl/lib/python3.9/site-packages/django/forms/widgets.py", line 280, in render
    context = self.get_context(name, value, attrs)
  File "/home/mariost-gelais/owsl.mariostg.com/.venv-owsl/lib/python3.9/site-packages/django/forms/widgets.py", line 758, in get_context
    context = super().get_context(name, value, attrs)
  File "/home/mariost-gelais/owsl.mariostg.com/.venv-owsl/lib/python3.9/site-packages/django/forms/widgets.py", line 717, in get_context
    context["widget"]["optgroups"] = self.optgroups(
  File "/home/mariost-gelais/owsl.mariostg.com/.venv-owsl/lib/python3.9/site-packages/django/forms/widgets.py", line 657, in optgroups
    for index, (option_value, option_label) in enumerate(self.choices):

Exception Type: TypeError at /search-plant/
Exception Value: cannot unpack non-iterable NoneType object

```

---

<div class="post-metadata">

**Author:** ![KenWhitesell](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.djangoproject.com/kenwhitesell/32/280_2.png) [@KenWhitesell](https://forum.djangoproject.com/u/KenWhitesell)\
**Post date:** [December 24, 2024, 1:50am UTC](https://forum.djangoproject.com/t/cannot-replicate-error-between-local-and-remote-machine/37438/4 "2024-12-24T01:50:27Z")

</div>

Side note: Just like with the code, you need to enclose the tracebacks between lines of ``` to ensure all the data is being shown.

---

<div class="post-metadata">

**Author:** ![mariostg](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.djangoproject.com/mariostg/32/10901_2.png) [@mariostg](https://forum.djangoproject.com/u/mariostg)\
**Post date:** [December 24, 2024, 1:51am UTC](https://forum.djangoproject.com/t/cannot-replicate-error-between-local-and-remote-machine/37438/5 "2024-12-24T01:51:49Z")

</div>

Oups. I saw you did it. Thanks.

---

<div class="post-metadata">

**Author:** ![KenWhitesell](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.djangoproject.com/kenwhitesell/32/280_2.png) [@KenWhitesell](https://forum.djangoproject.com/u/KenWhitesell)\
**Post date:** [December 24, 2024, 1:57am UTC](https://forum.djangoproject.com/t/cannot-replicate-error-between-local-and-remote-machine/37438/6 "2024-12-24T01:57:02Z")

</div>

Given that you’re running different versions of Django and Python between the two environments, have you ensured that all your ancillary libraries (such as django\_filters) are compatible in your remote environment?

(You mention you’re using Django 5.1.3 locally, which implies at least Python 3.10. But your remote system is Django 4.2 & Python 3.9, which could cause some version incompatibilities with other third-party libraries.)

Also, I noticed you’ve got `django.forms` in your INSTALLED\_APPS. I’m not aware of any situation where it is used as a Django app - you might want to remove it.

---

<div class="post-metadata">

**Author:** ![mariostg](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.djangoproject.com/mariostg/32/10901_2.png) [@mariostg](https://forum.djangoproject.com/u/mariostg)\
**Post date:** [December 24, 2024, 2:47am UTC](https://forum.djangoproject.com/t/cannot-replicate-error-between-local-and-remote-machine/37438/7 "2024-12-24T02:47:06Z")

</div>

Well, I recreated my venv on the remote computer using python 3.12, which I had to compile first, upgraded django to 5.1 and everything is working fine. Wonderful Python/django.

Will check what this `django.forms` is doing in the INSTALLED\_APPS

---

<div class="post-metadata">

**Author:** ![KenWhitesell](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.djangoproject.com/kenwhitesell/32/280_2.png) [@KenWhitesell](https://forum.djangoproject.com/u/KenWhitesell)\
**Post date:** [December 24, 2024, 2:52am UTC](https://forum.djangoproject.com/t/cannot-replicate-error-between-local-and-remote-machine/37438/8 "2024-12-24T02:52:25Z")

</div>

I don’t know how many third-party packages you are using in your project, or how you’re building your environment in that remote system, but it _might_ have been less work to first check the versions of the libraries you are using.

---

<div class="post-metadata">

**Author:** ![mariostg](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.djangoproject.com/mariostg/32/10901_2.png) [@mariostg](https://forum.djangoproject.com/u/mariostg)\
**Post date:** [December 24, 2024, 3:20am UTC](https://forum.djangoproject.com/t/cannot-replicate-error-between-local-and-remote-machine/37438/9 "2024-12-24T03:20:48Z")

</div>

Going back to the django.forms in my INSTALLED\_APPS, if I remove the statement, I get a `TEmplateDoesNotExist` error. But that might be off topic.

Also, I am using `django_filters` but I don’t need to have it in my INSTALLED\_APPS which I find strange since it should be there according to [Installation - django-filter 24.3 documentation](https://django-filter.readthedocs.io/en/stable/guide/install.html)

```auto
Environment:

Request Method: GET
Request URL: http://127.0.0.1:5555/search-plant/

Django Version: 5.1.3
Python Version: 3.11.1
Installed Applications:
['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'django_browser_reload',
 'project']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware',
 'django_browser_reload.middleware.BrowserReloadMiddleware']

Template loader postmortem
Django tried loading these templates, in this order:

Using engine django:
    * django.template.loaders.filesystem.Loader: /Users/mariost-gelais/Documents/gitprojects/owsl/djbp/templates/django/forms/widgets/text.html (Source does not exist)
    * django.template.loaders.app_directories.Loader: /Users/mariost-gelais/Documents/gitprojects/owsl/djbp/.venv-owsl/lib/python3.11/site-packages/django/contrib/admin/templates/django/forms/widgets/text.html (Source does not exist)
    * django.template.loaders.app_directories.Loader: /Users/mariost-gelais/Documents/gitprojects/owsl/djbp/.venv-owsl/lib/python3.11/site-packages/django/contrib/auth/templates/django/forms/widgets/text.html (Source does not exist)
    * django.template.loaders.app_directories.Loader: /Users/mariost-gelais/Documents/gitprojects/owsl/djbp/project/templates/django/forms/widgets/text.html (Source does not exist)

Template error:
In template /Users/mariost-gelais/Documents/gitprojects/owsl/djbp/project/templates/project/search-form.html, error at line 9
   django/forms/widgets/text.html
   1 : 
   2 : <div class="form-container">
   3 : <form class='form' method="GET">
   4 : <header class="form__header">Input one or many search criterion</header>
   5 : <div class="panel">
   6 : <div class="flex-col">
   7 : <div class="title">Plant Names</div>
   8 : <div class="flex-row">
   9 : <div class="form__field"><label class="form-label">Latin</label> {{filter.form.latin_name}} </div>
   10 : <div class="form__field"><label class="form-label">English</label> {{filter.form.english_name}}</div>
   11 : <div class="form__field"><label class="form-label">French</label> {{filter.form.french_name}}</div>
   12 : </div>
   13 : </div>
   14 : 
   15 : <div class="flex-row">
   16 : <div class="flex-col">
   17 : <div class="title">Sun Requirement</div>
   18 : <div class="light-range__inputs">
   19 : <div class="form__field"><label class="form-label">Max</label>{{filter.form.light_from}}</div>

Traceback (most recent call last):
  File "/Users/mariost-gelais/Documents/gitprojects/owsl/djbp/.venv-owsl/lib/python3.11/site-packages/django/template/backends/django.py", line 107, in render
    return self.template.render(context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/mariost-gelais/Documents/gitprojects/owsl/djbp/.venv-owsl/lib/python3.11/site-packages/django/template/base.py", line 171, in render
    return self._render(context)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/Users/mariost-gelais/Documents/gitprojects/owsl/djbp/.venv-owsl/lib/python3.11/site-packages/django/test/utils.py", line 114, in instrumented_test_render
    return self.nodelist.render(context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/mariost-gelais/Documents/gitprojects/owsl/djbp/.venv-owsl/lib/python3.11/site-packages/django/template/base.py", line 1008, in render
    return SafeString("".join([node.render_annotated(context) for node in self]))
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/mariost-gelais/Documents/gitprojects/owsl/djbp/.venv-owsl/lib/python3.11/site-packages/django/template/base.py", line 1008, in <listcomp>
    return SafeString("".join([node.render_annotated(context) for node in self]))
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/mariost-gelais/Documents/gitprojects/owsl/djbp/.venv-owsl/lib/python3.11/site-packages/django/template/base.py", line 969, in render_annotated
    return self.render(context)
           ^^^^^^^^^^^^^^^^^^^^
  File "/Users/mariost-gelais/Documents/gitprojects/owsl/djbp/.venv-owsl/lib/python3.11/site-packages/django/template/loader_tags.py", line 159, in render
    return compiled_parent._render(context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/mariost-gelais/Documents/gitprojects/owsl/djbp/.venv-owsl/lib/python3.11/site-packages/django/test/utils.py", line 114, in instrumented_test_render
    return self.nodelist.render(context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/mariost-gelais/Documents/gitprojects/owsl/djbp/.venv-owsl/lib/python3.11/site-packages/django/template/base.py", line 1008, in render
    return SafeString("".join([node.render_annotated(context) for node in self]))
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/mariost-gelais/Documents/gitprojects/owsl/djbp/.venv-owsl/lib/python3.11/site-packages/django/template/base.py", line 1008, in <listcomp>
    return SafeString("".join([node.render_annotated(context) for node in self]))
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/mariost-gelais/Documents/gitprojects/owsl/djbp/.venv-owsl/lib/python3.11/site-packages/django/template/base.py", line 969, in render_annotated
    return self.render(context)
           ^^^^^^^^^^^^^^^^^^^^
  File "/Users/mariost-gelais/Documents/gitprojects/owsl/djbp/.venv-owsl/lib/python3.11/site-packages/django/template/loader_tags.py", line 65, in render
    result = block.nodelist.render(context)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/mariost-gelais/Documents/gitprojects/owsl/djbp/.venv-owsl/lib/python3.11/site-packages/django/template/base.py", line 1008, in render
    return SafeString("".join([node.render_annotated(context) for node in self]))
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/mariost-gelais/Documents/gitprojects/owsl/djbp/.venv-owsl/lib/python3.11/site-packages/django/template/base.py", line 1008, in <listcomp>
    return SafeString("".join([node.render_annotated(context) for node in self]))
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/mariost-gelais/Documents/gitprojects/owsl/djbp/.venv-owsl/lib/python3.11/site-packages/django/template/base.py", line 969, in render_annotated
    return self.render(context)
           ^^^^^^^^^^^^^^^^^^^^
  File "/Users/mariost-gelais/Documents/gitprojects/owsl/djbp/.venv-owsl/lib/python3.11/site-packages/django/template/loader_tags.py", line 210, in render
    return template.render(context)
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/mariost-gelais/Documents/gitprojects/owsl/djbp/.venv-owsl/lib/python3.11/site-packages/django/template/base.py", line 173, in render
    return self._render(context)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/Users/mariost-gelais/Documents/gitprojects/owsl/djbp/.venv-owsl/lib/python3.11/site-packages/django/test/utils.py", line 114, in instrumented_test_render
    return self.nodelist.render(context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/mariost-gelais/Documents/gitprojects/owsl/djbp/.venv-owsl/lib/python3.11/site-packages/django/template/base.py", line 1008, in render
    return SafeString("".join([node.render_annotated(context) for node in self]))
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/mariost-gelais/Documents/gitprojects/owsl/djbp/.venv-owsl/lib/python3.11/site-packages/django/template/base.py", line 1008, in <listcomp>
    return SafeString("".join([node.render_annotated(context) for node in self]))
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/mariost-gelais/Documents/gitprojects/owsl/djbp/.venv-owsl/lib/python3.11/site-packages/django/template/base.py", line 969, in render_annotated
    return self.render(context)
           ^^^^^^^^^^^^^^^^^^^^
  File "/Users/mariost-gelais/Documents/gitprojects/owsl/djbp/.venv-owsl/lib/python3.11/site-packages/django/template/base.py", line 1073, in render
    return render_value_in_context(output, context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/mariost-gelais/Documents/gitprojects/owsl/djbp/.venv-owsl/lib/python3.11/site-packages/django/template/base.py", line 1050, in render_value_in_context
    value = str(value)
            ^^^^^^^^^^
  File "/Users/mariost-gelais/Documents/gitprojects/owsl/djbp/.venv-owsl/lib/python3.11/site-packages/django/forms/utils.py", line 79, in __str__
    return self.as_widget()
           ^^^^^^^^^^^^^^^^
  File "/Users/mariost-gelais/Documents/gitprojects/owsl/djbp/.venv-owsl/lib/python3.11/site-packages/django/forms/boundfield.py", line 108, in as_widget
    return widget.render(
           
  File "/Users/mariost-gelais/Documents/gitprojects/owsl/djbp/.venv-owsl/lib/python3.11/site-packages/django/forms/widgets.py", line 279, in render
    return self._render(self.template_name, context, renderer)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/mariost-gelais/Documents/gitprojects/owsl/djbp/.venv-owsl/lib/python3.11/site-packages/django/forms/widgets.py", line 284, in _render
    return mark_safe(renderer.render(template_name, context))
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/mariost-gelais/Documents/gitprojects/owsl/djbp/.venv-owsl/lib/python3.11/site-packages/django/forms/renderers.py", line 28, in render
    template = self.get_template(template_name)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/mariost-gelais/Documents/gitprojects/owsl/djbp/.venv-owsl/lib/python3.11/site-packages/django/forms/renderers.py", line 110, in get_template
    return get_template(template_name)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/mariost-gelais/Documents/gitprojects/owsl/djbp/.venv-owsl/lib/python3.11/site-packages/django/template/loader.py", line 19, in get_template
    raise TemplateDoesNotExist(template_name, chain=chain)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The above exception (django/forms/widgets/text.html) was the direct cause of the following exception:
  File "/Users/mariost-gelais/Documents/gitprojects/owsl/djbp/.venv-owsl/lib/python3.11/site-packages/django/core/handlers/exception.py", line 55, in inner
    response = get_response(request)
               ^^^^^^^^^^^^^^^^^^^^^
  File "/Users/mariost-gelais/Documents/gitprojects/owsl/djbp/.venv-owsl/lib/python3.11/site-packages/django/core/handlers/base.py", line 197, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/mariost-gelais/Documents/gitprojects/owsl/djbp/project/views.py", line 132, in search_plant
    return render(
           
  File "/Users/mariost-gelais/Documents/gitprojects/owsl/djbp/.venv-owsl/lib/python3.11/site-packages/django/shortcuts.py", line 25, in render
    content = loader.render_to_string(template_name, context, request, using=using)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/mariost-gelais/Documents/gitprojects/owsl/djbp/.venv-owsl/lib/python3.11/site-packages/django/template/loader.py", line 62, in render_to_string
    return template.render(context, request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/mariost-gelais/Documents/gitprojects/owsl/djbp/.venv-owsl/lib/python3.11/site-packages/django/template/backends/django.py", line 109, in render
    reraise(exc, self.backend)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/mariost-gelais/Documents/gitprojects/owsl/djbp/.venv-owsl/lib/python3.11/site-packages/django/template/backends/django.py", line 130, in reraise
    raise new from exc
    ^^^^^^^^^^^^^^^^^^

Exception Type: TemplateDoesNotExist at /search-plant/
Exception Value: django/forms/widgets/text.html

```

---

<div class="post-metadata">

**Author:** ![KenWhitesell](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.djangoproject.com/kenwhitesell/32/280_2.png) [@KenWhitesell](https://forum.djangoproject.com/u/KenWhitesell)\
**Post date:** [December 24, 2024, 3:57am UTC](https://forum.djangoproject.com/t/cannot-replicate-error-between-local-and-remote-machine/37438/10 "2024-12-24T03:57:32Z")

</div>

What happens if you have `django_filters` in `INSTALLED_APPS` but not `django.forms`?

---

<div class="post-metadata">

**Author:** ![mariostg](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.djangoproject.com/mariostg/32/10901_2.png) [@mariostg](https://forum.djangoproject.com/u/mariostg)\
**Post date:** [December 25, 2024, 5:39pm UTC](https://forum.djangoproject.com/t/cannot-replicate-error-between-local-and-remote-machine/37438/11 "2024-12-25T17:39:56Z")

</div>

Still get template does not exists with following:

```auto
INSTALLED_APPS = [
    "django.contrib.admin",
    "django.contrib.auth",
    "django.contrib.contenttypes",
    "django.contrib.sessions",
    "django.contrib.messages",
    "django.contrib.staticfiles",
    "django_filters",
    # "django.forms",
    # "debug_toolbar",
    "django_browser_reload",
    "project",
]

```

---

<div class="post-metadata">

**Author:** ![KenWhitesell](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.djangoproject.com/kenwhitesell/32/280_2.png) [@KenWhitesell](https://forum.djangoproject.com/u/KenWhitesell)\
**Post date:** [December 25, 2024, 9:49pm UTC](https://forum.djangoproject.com/t/cannot-replicate-error-between-local-and-remote-machine/37438/12 "2024-12-25T21:49:08Z")

</div>

What is your `TEMPLATES` setting from your settings file?

---

<div class="post-metadata">

**Author:** ![mariostg](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.djangoproject.com/mariostg/32/10901_2.png) [@mariostg](https://forum.djangoproject.com/u/mariostg)\
**Post date:** [December 26, 2024, 4:28am UTC](https://forum.djangoproject.com/t/cannot-replicate-error-between-local-and-remote-machine/37438/13 "2024-12-26T04:28:01Z")

</div>

```auto
TEMPLATES = [
    {
        "BACKEND": "django.template.backends.django.DjangoTemplates",
        "DIRS": [BASE_DIR / "templates"],
        "APP_DIRS": True,
        "OPTIONS": {
            "context_processors": [
                "django.template.context_processors.debug",
                "django.template.context_processors.request",
                "django.contrib.auth.context_processors.auth",
                "django.contrib.messages.context_processors.messages",
            ],
        },
    },
]

```
