nephila / django-meta

Pluggable app to allow Django developers to quickly add meta tags and OpenGraph, Twitter, and Google Plus properties to their HTML responses.
https://django-meta.readthedocs.io
Other
477 stars 68 forks source link

Undocumented: requires Sites app to be installed #192

Closed norchai closed 8 months ago

norchai commented 8 months ago

Description

If the sites app isn't installed in settings, meta throws a RuntimeError:

Model class django.contrib.sites.models.Site doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.

The requirement to install the Sites app is not documented.

Steps to reproduce

Versions

Python: 3.10.9 Django: 4.2 django-meta: 2.4.0

Expected behaviour

Either

Actual behaviour


Traceback (most recent call last):
  File "/Users/norch/.local/share/virtualenvs/myapp-9Wh0Qds2/lib/python3.10/site-packages/django/core/handlers/exception.py", line 55, in inner
    response = get_response(request)
  File "/Users/norch/.local/share/virtualenvs/myapp-9Wh0Qds2/lib/python3.10/site-packages/django/core/handlers/base.py", line 220, in _get_response
    response = response.render()
  File "/Users/norch/.local/share/virtualenvs/myapp-9Wh0Qds2/lib/python3.10/site-packages/django/template/response.py", line 114, in render
    self.content = self.rendered_content
  File "/Users/norch/.local/share/virtualenvs/myapp-9Wh0Qds2/lib/python3.10/site-packages/django/template/response.py", line 92, in rendered_content
    return template.render(context, self._request)
  File "/Users/norch/.local/share/virtualenvs/myapp-9Wh0Qds2/lib/python3.10/site-packages/django/template/backends/django.py", line 61, in render
    return self.template.render(context)
  File "/Users/norch/.local/share/virtualenvs/myapp-9Wh0Qds2/lib/python3.10/site-packages/django/template/base.py", line 175, in render
    return self._render(context)
  File "/Users/norch/.local/share/virtualenvs/myapp-9Wh0Qds2/lib/python3.10/site-packages/django/template/base.py", line 167, in _render
    return self.nodelist.render(context)
  File "/Users/norch/.local/share/virtualenvs/myapp-9Wh0Qds2/lib/python3.10/site-packages/django/template/base.py", line 1005, in render
    return SafeString("".join([node.render_annotated(context) for node in self]))
  File "/Users/norch/.local/share/virtualenvs/myapp-9Wh0Qds2/lib/python3.10/site-packages/django/template/base.py", line 1005, in <listcomp>
    return SafeString("".join([node.render_annotated(context) for node in self]))
  File "/Users/norch/.local/share/virtualenvs/myapp-9Wh0Qds2/lib/python3.10/site-packages/django/template/base.py", line 966, in render_annotated
    return self.render(context)
  File "/Users/norch/.local/share/virtualenvs/myapp-9Wh0Qds2/lib/python3.10/site-packages/django/template/loader_tags.py", line 157, in render
    return compiled_parent._render(context)
  File "/Users/norch/.local/share/virtualenvs/myapp-9Wh0Qds2/lib/python3.10/site-packages/django/template/base.py", line 167, in _render
    return self.nodelist.render(context)
  File "/Users/norch/.local/share/virtualenvs/myapp-9Wh0Qds2/lib/python3.10/site-packages/django/template/base.py", line 1005, in render
    return SafeString("".join([node.render_annotated(context) for node in self]))
  File "/Users/norch/.local/share/virtualenvs/myapp-9Wh0Qds2/lib/python3.10/site-packages/django/template/base.py", line 1005, in <listcomp>
    return SafeString("".join([node.render_annotated(context) for node in self]))
  File "/Users/norch/.local/share/virtualenvs/myapp-9Wh0Qds2/lib/python3.10/site-packages/django/template/base.py", line 966, in render_annotated
    return self.render(context)
  File "/Users/norch/.local/share/virtualenvs/myapp-9Wh0Qds2/lib/python3.10/site-packages/django/template/loader_tags.py", line 157, in render
    return compiled_parent._render(context)
  File "/Users/norch/.local/share/virtualenvs/myapp-9Wh0Qds2/lib/python3.10/site-packages/django/template/base.py", line 167, in _render
    return self.nodelist.render(context)
  File "/Users/norch/.local/share/virtualenvs/myapp-9Wh0Qds2/lib/python3.10/site-packages/django/template/base.py", line 1005, in render
    return SafeString("".join([node.render_annotated(context) for node in self]))
  File "/Users/norch/.local/share/virtualenvs/myapp-9Wh0Qds2/lib/python3.10/site-packages/django/template/base.py", line 1005, in <listcomp>
    return SafeString("".join([node.render_annotated(context) for node in self]))
  File "/Users/norch/.local/share/virtualenvs/myapp-9Wh0Qds2/lib/python3.10/site-packages/django/template/base.py", line 966, in render_annotated
    return self.render(context)
  File "/Users/norch/.local/share/virtualenvs/myapp-9Wh0Qds2/lib/python3.10/site-packages/django/template/loader_tags.py", line 208, in render
    return template.render(context)
  File "/Users/norch/.local/share/virtualenvs/myapp-9Wh0Qds2/lib/python3.10/site-packages/django/template/base.py", line 177, in render
    return self._render(context)
  File "/Users/norch/.local/share/virtualenvs/myapp-9Wh0Qds2/lib/python3.10/site-packages/django/template/base.py", line 167, in _render
    return self.nodelist.render(context)
  File "/Users/norch/.local/share/virtualenvs/myapp-9Wh0Qds2/lib/python3.10/site-packages/django/template/base.py", line 1005, in render
    return SafeString("".join([node.render_annotated(context) for node in self]))
  File "/Users/norch/.local/share/virtualenvs/myapp-9Wh0Qds2/lib/python3.10/site-packages/django/template/base.py", line 1005, in <listcomp>
    return SafeString("".join([node.render_annotated(context) for node in self]))
  File "/Users/norch/.local/share/virtualenvs/myapp-9Wh0Qds2/lib/python3.10/site-packages/django/template/base.py", line 966, in render_annotated
    return self.render(context)
  File "/Users/norch/.local/share/virtualenvs/myapp-9Wh0Qds2/lib/python3.10/site-packages/django/template/defaulttags.py", line 414, in render
    return strip_spaces_between_tags(self.nodelist.render(context).strip())
  File "/Users/norch/.local/share/virtualenvs/myapp-9Wh0Qds2/lib/python3.10/site-packages/django/template/base.py", line 1005, in render
    return SafeString("".join([node.render_annotated(context) for node in self]))
  File "/Users/norch/.local/share/virtualenvs/myapp-9Wh0Qds2/lib/python3.10/site-packages/django/template/base.py", line 1005, in <listcomp>
    return SafeString("".join([node.render_annotated(context) for node in self]))
  File "/Users/norch/.local/share/virtualenvs/myapp-9Wh0Qds2/lib/python3.10/site-packages/django/template/base.py", line 966, in render_annotated
    return self.render(context)
  File "/Users/norch/.local/share/virtualenvs/myapp-9Wh0Qds2/lib/python3.10/site-packages/django/template/defaulttags.py", line 52, in render
    output = self.nodelist.render(context)
  File "/Users/norch/.local/share/virtualenvs/myapp-9Wh0Qds2/lib/python3.10/site-packages/django/template/base.py", line 1005, in render
    return SafeString("".join([node.render_annotated(context) for node in self]))
  File "/Users/norch/.local/share/virtualenvs/myapp-9Wh0Qds2/lib/python3.10/site-packages/django/template/base.py", line 1005, in <listcomp>
    return SafeString("".join([node.render_annotated(context) for node in self]))
  File "/Users/norch/.local/share/virtualenvs/myapp-9Wh0Qds2/lib/python3.10/site-packages/django/template/base.py", line 966, in render_annotated
    return self.render(context)
  File "/Users/norch/.local/share/virtualenvs/myapp-9Wh0Qds2/lib/python3.10/site-packages/django/template/defaulttags.py", line 321, in render
    return nodelist.render(context)
  File "/Users/norch/.local/share/virtualenvs/myapp-9Wh0Qds2/lib/python3.10/site-packages/django/template/base.py", line 1005, in render
    return SafeString("".join([node.render_annotated(context) for node in self]))
  File "/Users/norch/.local/share/virtualenvs/myapp-9Wh0Qds2/lib/python3.10/site-packages/django/template/base.py", line 1005, in <listcomp>
    return SafeString("".join([node.render_annotated(context) for node in self]))
  File "/Users/norch/.local/share/virtualenvs/myapp-9Wh0Qds2/lib/python3.10/site-packages/django/template/base.py", line 966, in render_annotated
    return self.render(context)
  File "/Users/norch/.local/share/virtualenvs/myapp-9Wh0Qds2/lib/python3.10/site-packages/django/template/defaulttags.py", line 321, in render
    return nodelist.render(context)
  File "/Users/norch/.local/share/virtualenvs/myapp-9Wh0Qds2/lib/python3.10/site-packages/django/template/base.py", line 1005, in render
    return SafeString("".join([node.render_annotated(context) for node in self]))
  File "/Users/norch/.local/share/virtualenvs/myapp-9Wh0Qds2/lib/python3.10/site-packages/django/template/base.py", line 1005, in <listcomp>
    return SafeString("".join([node.render_annotated(context) for node in self]))
  File "/Users/norch/.local/share/virtualenvs/myapp-9Wh0Qds2/lib/python3.10/site-packages/django/template/base.py", line 966, in render_annotated
    return self.render(context)
  File "/Users/norch/.local/share/virtualenvs/myapp-9Wh0Qds2/lib/python3.10/site-packages/django/template/library.py", line 236, in render
    resolved_args, resolved_kwargs = self.get_resolved_arguments(context)
  File "/Users/norch/.local/share/virtualenvs/myapp-9Wh0Qds2/lib/python3.10/site-packages/django/template/library.py", line 221, in get_resolved_arguments
    resolved_args = [var.resolve(context) for var in self.args]
  File "/Users/norch/.local/share/virtualenvs/myapp-9Wh0Qds2/lib/python3.10/site-packages/django/template/library.py", line 221, in <listcomp>
    resolved_args = [var.resolve(context) for var in self.args]
  File "/Users/norch/.local/share/virtualenvs/myapp-9Wh0Qds2/lib/python3.10/site-packages/django/template/base.py", line 715, in resolve
    obj = self.var.resolve(context)
  File "/Users/norch/.local/share/virtualenvs/myapp-9Wh0Qds2/lib/python3.10/site-packages/django/template/base.py", line 847, in resolve
    value = self._resolve_lookup(context)
  File "/Users/norch/.local/share/virtualenvs/myapp-9Wh0Qds2/lib/python3.10/site-packages/django/template/base.py", line 914, in _resolve_lookup
    current = current()
  File "/Users/norch/.local/share/virtualenvs/myapp-9Wh0Qds2/lib/python3.10/site-packages/meta/views.py", line 33, in get_domain
    from django.contrib.sites.models import Site
  File "/Users/norch/.local/share/virtualenvs/myapp-9Wh0Qds2/lib/python3.10/site-packages/django/contrib/sites/models.py", line 79, in <module>
    class Site(models.Model):
  File "/Users/norch/.local/share/virtualenvs/myapp-9Wh0Qds2/lib/python3.10/site-packages/django/db/models/base.py", line 134, in __new__
    raise RuntimeError(
RuntimeError: Model class django.contrib.sites.models.Site doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.```

The django debug screen shows that it's triggered by this template tag:
`{% twitter_prop 'domain' meta.get_domain %}`

## Additional information
protoroto commented 8 months ago

@norchai Thanks for reporting this! I think you're right, I'll check with @yakky what's the best fix here, because Sites framework should not be mandatory

protoroto commented 8 months ago

@norchai Hi! I've just released 2.4.1 version, this should be fixed now. Thanks again for reporting this!

norchai commented 8 months ago

Yup, that seems to work. Thank you for fixing that so quickly!