Docker-mailman: django рдореЗрдВ example.com рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕рд╛рдЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рдХрд╛рд▓реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 21 рдЕрдкреНрд░реИрд▓ 2017  ┬╖  9рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: maxking/docker-mailman

рдЕрднреА, рдЬрдм рдХреЛрдИ рдЙрджрд╛рд╣рд░рдг рд╕рд╛рдордиреЗ рдЖрддрд╛ рд╣реИ, рддреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕рд╛рдЗрдЯ example.com (рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ) рдкрд░ рд╕реЗрдЯ рд╣реЛ рдЬрд╛рддреА рд╣реИред

рдЗрд╕реЗ рдмрджрд▓реЗрдВ рдпрд╛ рд╕рд╛рдЗрдЯ рдЖрдИрдбреА рдХреЛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбреЛрдореЗрди рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢ рдЬреЛрдбрд╝реЗрдВред

bug documentation web

рд╕рднреА 9 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЗрд╕рд╕реЗ рднреА рдмрджрддрд░, рдЕрдЧрд░ рдореИрдВ рд╕рд╛рдЗрдЯ рд╕реВрдЪреА рд╕реЗ example.com рд╣рдЯрд╛рддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ 'рд╕рд░реНрд╡рд░ рддреНрд░реБрдЯрд┐ (500)' рдорд┐рд▓рддреА рд╣реИ рдФрд░ рд╕реНрдерд╛рдкрдирд╛ рдЕрдиреБрдкрдпреЛрдЧреА рд╣реЛ рдЬрд╛рддреА рд╣реИред

рдпрд╣рд╛рдБ рдореЗрд▓рдореИрди-рд╡реЗрдм рд▓реЙрдЧ рдореЗрдВ рдХреНрдпрд╛ рд╣реИ:

Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/django/core/handlers/exception.py", line 39, in inner
    response = get_response(request)
  File "/usr/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 249, in _legacy_get_response
    response = self._get_response(request)
  File "/usr/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 187, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/usr/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 185, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/usr/local/lib/python2.7/site-packages/postorius/views/list.py", line 593, in list_index
    'domain_count': len(choosable_domains)})
  File "/usr/local/lib/python2.7/site-packages/django/shortcuts.py", line 30, in render
    content = loader.render_to_string(template_name, context, request, using=using)
  File "/usr/local/lib/python2.7/site-packages/django/template/loader.py", line 68, in render_to_string
    return template.render(context, request)
  File "/usr/local/lib/python2.7/site-packages/django/template/backends/django.py", line 66, in render
    return self.template.render(context)
  File "/usr/local/lib/python2.7/site-packages/django/template/base.py", line 206, in render
    with context.bind_template(self):
  File "/usr/local/lib/python2.7/contextlib.py", line 17, in __enter__
    return self.gen.next()
  File "/usr/local/lib/python2.7/site-packages/django/template/context.py", line 236, in bind_template
    updates.update(processor(self.request))
  File "/usr/local/lib/python2.7/site-packages/django_mailman3/context_processors.py", line 33, in common
    context["site_name"] = get_current_site(request).name
  File "/usr/local/lib/python2.7/site-packages/django/contrib/sites/shortcuts.py", line 15, in get_current_site
    return Site.objects.get_current(request)
  File "/usr/local/lib/python2.7/site-packages/django/contrib/sites/models.py", line 65, in get_current
    return self._get_site_by_id(site_id)
  File "/usr/local/lib/python2.7/site-packages/django/contrib/sites/models.py", line 35, in _get_site_by_id
    site = self.get(pk=site_id)
  File "/usr/local/lib/python2.7/site-packages/django/db/models/manager.py", line 85, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/django/db/models/query.py", line 385, in get
    self.model._meta.object_name
DoesNotExist: Site matching query does not exist.

@ulrith рд╣рд╛рдБ, рдЖрдкрдХреЛ Django рдХреА рд╕реЗрдЯрд┐рдВрдЧ рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ SITE_ID рдХреЛ рдЖрдк рдЬрд┐рд╕ рднреА рд╕рд╛рдЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЙрд╕реЗ рдмрджрд▓рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдХрдВрдЯреЗрдирд░ рдХреЗ settings.py рдореЗрдВ рдорд╛рди 1 рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдпрд╣ example.com рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред

рдЖрдкрдХреЛ рдЗрд╕реЗ 2 рдореЗрдВ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬреЛ рдЖрдкрдХреЗ рдбреЛрдореЗрди рдХреЛ settings_local.py рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдЧрд╛ред рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:
SITE_ID=2

@maxking рдпрд╣ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ рдпрджрд┐ рдореИрдВ рдЕрдкрдиреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбреЛрдореЗрди рджреНрд╡рд╛рд░рд╛ example.com рдХреЛ рдХреБрдЫ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдмрджрд▓ рд╕рдХрддрд╛ рд╣реВрдВ рдЬреИрд╕реЗ рдореИрдВрдиреЗ рдЗрд╕ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИред рдпрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдПрд╕рдХреНрдпреВрдПрд▓ рдХреНрд╡реЗрд░реА рджреНрд╡рд╛рд░рд╛ ... рдХреНрдпрд╛ рдЖрдк рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

@ulrith рд╣рд╛рдБ, Django рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЖрдкрдХреЛ рдПрдХ рдкрд╛рдпрдерди рдЖрд░рдИрдкреАрдПрд▓ рдореЗрдВ рдЫреЛрдбрд╝ рджреЗрдЧреА рдЬрд╣рд╛рдВ рдЖрдк рдЕрдкрдиреА рдЗрдЪреНрдЫрд╛рдиреБрд╕рд╛рд░ рдХреБрдЫ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЙрддреНрдкрд╛рджрди рдбреЗрдЯрд╛рдмреЗрд╕ рддрдХ рднреА ;-)

maxking<strong i="7">@mailman</strong>:~$ docker exec -it mailman-web python manage.py shell
Python 2.7.13 (default, Jun 21 2017, 18:14:15) 
[GCC 4.9.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from django.db import models
>>> from django.contrib.sites.models import Site
>>> Site.objects.all()
<QuerySet [<Site: lists.araj.me>]>
>>> Site.objects.create(name='Random Domain', domain='mail.araj.me')
<Site: mail.araj.me>
>>> Site.objects.all()
<QuerySet [<Site: lists.araj.me>, <Site: mail.araj.me>]>
>>> for each in Site.objects.all():
...     print(each.domain, each.id)
... 
(u'lists.araj.me', 2)
(u'mail.araj.me', 3)

рдпрджрд┐ рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рдкрдврд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдпрд╣рд╛рдВ Django рдХреЗ рд╕рд╛рдЗрдЯреНрд╕ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рд▓рд┐рдВрдХ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ

@maxking рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореИрдВ рдкрд╛рдпрдерди рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдБред рд╕рд╛рдЗрдЯ рдореЗрдВ example.com: mydomain.tld рдирд╡ рд╕реНрдерд╛рдкрд┐рдд рдбрд╛рдХрд┐рдпрд╛ 3 рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдЖрдк рдореБрдЭреЗ рдПрдХ рдХреЛрдб рдХрд╛ рдЯреБрдХрдбрд╝рд╛ (рдЖрджрд░реНрд╢ рдПрдХ рд▓рд╛рдЗрдирд░), рдЬреЛ рд╕рд╛рдЗрдЯ рдХрд╛ рд╕реНрдерд╛рди рд▓реЗ рд▓реЗрдЧрд╛ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ?

рдареАрдХ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ, Django рдбрд┐рдлрд╝реЙрд▓реНрдЯ examples.com рд╕рд╛рдЗрдЯ рд╕реНрд╡рдпрдВ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд░реЛрдХрдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред

рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдХреЗ рджреМрд░рд╛рди рдПрдХ рдирдИ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣рд╛рдВ рдЖрдкрдХреЗ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВред

  • рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ "рд╕рд╣реА" рддрд░реАрдХрд╛ Django рдХреЗ рдлрд┐рдХреНрд╕реНрдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред рдлрд┐рдХреНрд╕реНрдЪрд░ рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рд╣рд╛рд░реНрдбрдХреЛрдбреЗрдб рдбреЗрдЯрд╛ рдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рддреЛ, рдЖрдк рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ JSON, YAML рдпрд╛ XML рдХреЗ рд░реВрдк рдореЗрдВ рдХреНрд░рдордмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХрдорд╛рдВрдб рдЪрд▓рд╛рддреЗ рд╣реИрдВ: python manage.py loaddata <nameoffixture> рдФрд░ django рдЙрд╕ рдбреЗрдЯрд╛ рдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

рдиреАрдЪреЗ рджреА рдЧрдИ рдлрд╝рд╛рдЗрд▓ fixtures/gen_site.yaml рдореЗрдВ рд╕рд╣реЗрдЬреА рдЧрдИ рд╣реИ:

- model: sites.Site
  pk: 100
  fields:
    domain: gmail.com
    name: Google

рдлрд┐рд░, рдЖрдк python manage.py loaddata gen_site рдЪрд▓рд╛рддреЗ рд╣реИрдВ рдФрд░ рдЖрдкрдХреА рд╕рд╛рдЗрдЯ рд╕реНрд╡рддрдГ рдмрди рдЬрд╛рддреА рд╣реИред рдлрд┐рд░ рдЖрдк рдЕрдкрдиреЗ SITE_ID=100 рдХреЛ settings_local.py рдмрджрд▓рддреЗ рд╣реИрдВ рдФрд░ рдЪреАрдЬреЗрдВ рдХрд╛рдо рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП!

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЕрднреА рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдХрд░рдирд╛ рд╢рд╛рдпрдж рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╕реНрдЯрдо рдХрдорд╛рдВрдб рдЪрд▓рд╛рдиреЗ рдХрд╛ рдХреЛрдИ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ (рдЬрд┐рд╕реЗ рдбреЙрдХрд░ рд╢рдмреНрджрд╛рд╡рд▓реА рдореЗрдВ рдПрдВрдЯреНрд░реАрдкреЙрдЗрдВрдЯ рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ)ред рдореИрдВрдиреЗ рдЙрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдЕрдВрдХ #61 рдЦреЛрд▓рд╛ рд╣реИред

  • рдЖрдкрдХреЗ рд▓рд┐рдП рджреВрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк рдЗрд╕ рдХрдорд╛рдВрдб рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЪрд▓рд╛рдирд╛ рд╣реЛрдЧрд╛:
python manage.py shell -c "from django.contrib.sites.models import Site; mysite,_=Site.objects.get_or_create(id=101, name='mysite.tld', domain='mysite.tld'); print(mysite.id, mysite.name)"

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЙрдкрд░реЛрдХреНрдд рдЖрджреЗрд╢ django рдХреЗ рд▓рд┐рдП рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЙрдкрд░реЛрдХреНрдд рдЖрджреЗрд╢ рд╕реЗ рдкрд╣рд▓реЗ docker-compose exec -T mailman-web рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред
рдпрд╣ рдЖрджреЗрд╢ mysite.tld рдирд╛рдо рдХреА рдПрдХ рдирдИ рд╕рд╛рдЗрдЯ рдмрдирд╛рдПрдЧрд╛ред рдпрд╣ id рдХреЛ рднреА рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдЧрд╛ рдЬрд┐рд╕реЗ рдЖрдкрдХреЛ рддрдм SITE_ID=101 рддрд╣рдд рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕рдХреЗ рдкреНрд░рднрд╛рд╡реА рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ Django рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрджрд┐ рд╕рд╛рдЗрдЯ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИ рддреЛ рдпрд╣ рдЖрджреЗрд╢ рд╡рд┐рдлрд▓ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдХрд░рдиреЗ рдХрд╛ рдпрд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рднреА рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рдкреНрд░рднрд╛рд╡реА рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдХрдВрдЯреЗрдирд░ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдХреЗрд╡рд▓ рдкрд╣рд▓реА рдмрд╛рд░, рд▓реЗрдХрд┐рди рдпрд╣ рдЙрддрдирд╛ рд╣реА рдЦрд░рд╛рдм рд╣реИ) рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд, settings_local.py рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ SITE_ID settings_local.py рдХреЛ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬрдм рддрдХ рдХрд┐ рдЖрдк рдХреБрдЫ sed рдпрд╛ awk рдЬрд╛рджреВ рдирд╣реАрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВред

  • рддреАрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк рдХреЗрд╡рд▓ example.com рдбреЛрдореЗрди рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдФрд░ рдЗрд╕реЗ рдЕрдкрдиреЗ рдЗрдЪреНрдЫрд┐рдд рдбреЛрдореЗрди рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рд╣реИред
python manage.py shell -c "from django.contrib.sites.models import Site; Site.objects.filter(domain='example.com').update(name='My Site', domain='mysite.tld')"

рдЗрд╕реЗ рдХрд╣реАрдВ рднреА рдХрд┐рд╕реА рднреА рдмрджрд▓рд╛рд╡ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд╕реНрдерд╛рдиреАрдп рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд╢реАрд░реНрд╖ рдкрд░ рдкреНрд░рджрд░реНрд╢рди рдирд╛рдо рддрдм рддрдХ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рдЬрдм рддрдХ рдХрд┐ рдореИрдВ Django рд╕рд░реНрд╡рд░ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдирд╣реАрдВ рдХрд░рддрд╛, рдФрд░ рдпрд╣ рдХреЗрд╡рд▓ рдкрд╣рд▓реА рдмрд╛рд░ рд╣реА рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛ред рдореЗрд░реЗ рдЕрдиреБрд╕рд╛рд░, рдпрд╣ рдкрд╣рд▓реЗ рд╡рд┐рдХрд▓реНрдк рдХреЗ рдмрд╛рдж рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рд▓рдЧрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдореИрдВ рдХрдВрдЯреЗрдирд░ рдЫрд╡рд┐рдпреЛрдВ рдореЗрдВ рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реВрдВред

@maxking рдЕрдВрддрд┐рдо рд╡рд┐рдХрд▓реНрдк рдПрдХ рдЖрдХрд░реНрд╖рдг рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ! рдзрдиреНрдпрд╡рд╛рдж

рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

DEFAULT_FROM_DOMAIN рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдЕрдм рдбрд┐рдлрд╝реЙрд▓реНрдЯ example.com рдбреЛрдореЗрди рдХреЛ рднреА рдмрджрд▓ рджреЗрддрд╛ рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡рд┐рд╡рд░рдг рдмрджрд▓рд╛ рдирд╣реАрдВ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ Django рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рд╕рд╛рдЗрдЯ рд╕реЗ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

#95 . рдореЗрдВ рдлрд┐рдХреНрд╕реНрдб

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

belzebubek picture belzebubek  ┬╖  12рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

morbidick picture morbidick  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

daamien picture daamien  ┬╖  12рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

strarsis picture strarsis  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mw44118 picture mw44118  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ