#python #django #django-views
#python #django #django-представления
Вопрос:
Я хочу запустить ОДИН проект django на нескольких доменах / веб-сайтах. Каждый веб-сайт должен иметь доступ к уникальному «urls.py «/»views.py «. Я уже пробовал это в этом руководстве, но у меня это не работает. Есть ли способ сделать это с помощью промежуточного программного обеспечения простым способом (без инфраструктуры сайтов)? Небольшая помощь была бы действительно отличной. Спасибо.
Редактировать: как я пробовал, как в приведенном выше руководстве, мой httpd.conf выглядел так:
ServerRoot "/home/webfactionusername/webapps/erdbeer/apache2"
LoadModule authz_core_module modules/mod_authz_core.so
LoadModule dir_module modules/mod_dir.so
LoadModule env_module modules/mod_env.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule mime_module modules/mod_mime.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule wsgi_module modules/mod_wsgi.so
LoadModule unixd_module modules/mod_unixd.so
LogFormat "%{X-Forwarded-For}i %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined
CustomLog /home/webfactionusername/logs/user/access_erdbeer.log combined
ErrorLog /home/webfactionusername/logs/user/error_erdbeer.log
Listen 10414
KeepAlive Off
SetEnvIf X-Forwarded-SSL on HTTPS=1
ServerLimit 1
StartServers 1
MaxRequestWorkers 5
MinSpareThreads 1
MaxSpareThreads 3
ThreadsPerChild 5
WSGIDaemonProcess erdbeer processes=2 threads=12 python-path=/home/webfactionusername/webapps/erdbeer:/home/webfactionusername/webapps/erdbeer/myproject:/home/webfactionusername/webapps/erdbeer/lib/python2.7
WSGIProcessGroup erdbeer
WSGIRestrictEmbedded On
WSGILazyInitialization On
WSGIScriptAlias / /home/webfactionusername/webapps/erdbeer/myproject/myproject/wsgi.py
# Virtual hosts setup
NameVirtualHost *
<VirtualHost *>
ServerName mydomain123abc.de
WSGIDaemonProcess erdbeer processes=5 python-path=/home/webfactionusername/webapps/erdbeer:/home/webfactionusername/webapps/erdbeer/lib/python2.7 threads=1
WSGIScriptAlias / /home/webfactionusername/webapps/erdbeer/subdomain1.wsgi
</VirtualHost>
<VirtualHost *>
ServerName seconddomain123.de
WSGIDaemonProcess erdbeer processes=5 python-path=/home/webfactionusername/webapps/erdbeer:/home/webfactionusername/webapps/erdbeer/lib/python2.7 threads=1
WSGIScriptAlias / /home/webfactionusername/webapps/erdbeer/subdomain2.wsgi
</VirtualHost>
Edit2: я все еще не могу понять эту концепцию промежуточного программного обеспечения. Я только смог понять, как мне, вероятно, нужно использовать «process_request», но я понятия не имею, как будет выглядеть файл промежуточного программного обеспечения. Допустим, у меня есть «domain1.com » и «domain2.com » который должен использовать эти URL-адреса:
domain1_urls.py
from django.conf.urls import include, url
from django.contrib import admin
from django.http import HttpResponse
urlpatterns = [
url(r'^
domains2_urls.py
from django.conf.urls import include, url
from django.contrib import admin
from django.http import HttpResponse
urlpatterns = [
url(r'^
Как бы я использовал это в своем промежуточном программном обеспечении? (Я новичок ...)
Комментарии:
1. Это будет работать. Могут быть проблемы с веб-сервером. Опубликуйте конфигурацию вашего веб-сервера
2. Я отредактировал свой пост. Я хотел бы сделать это с помощью промежуточного программного обеспечения, если это возможно, поскольку я ничего не знаю об Apache и тому подобном.
3. Вам нужны разные настройки для разных доменов?
4. Нет. Настройки те же. Но URL-адресов и представлений не будет.
5. Взгляните на промежуточные программы. Внутри промежуточного программного обеспечения вы получите домен и URL. Убедитесь, что домен имеет доступ к этому URL. Затем сделайте перенаправления на основе этого.
Ответ №1:
Я отлично нашел решение здесь.
# File: settings.py
HOST_MIDDLEWARE_URLCONF_MAP = {
# Control Panel
"www.example.com": "webapp.sites.example.urls",
}
и
# File: multihost.py
import time
from django.conf import settings
from django.utils.cache import patch_vary_headers
class MultiHostMiddleware:
def process_request(self, request):
try:
request.META["LoadingStart"] = time.time()
host = request.META["HTTP_HOST"]
#if host[-3:] == ":80":
# host = host[:-3] # ignore default port number, if present
# best way to do this.
host_port = host.split(':')
if len(host_port)==2:
host = host_port[0]
if host in settings.HOST_MIDDLEWARE_URLCONF_MAP:
request.urlconf = settings.HOST_MIDDLEWARE_URLCONF_MAP[host]
request.META["MultiHost"] = str(request.urlconf)
else:
request.META["MultiHost"] = str(settings.ROOT_URLCONF)
except KeyError:
pass # use default urlconf (settings.ROOT_URLCONF)
def process_response(self, request, response):
if 'MultiHost' in request.META:
response['MultiHost'] = request.META.get("MultiHost")
if 'LoadingStart' in request.META:
_loading_time = time.time() - int(request.META["LoadingStart"])
response['LoadingTime'] = "%.2fs" % ( _loading_time, )
if getattr(request, "urlconf", None):
patch_vary_headers(response, ('Host',))
return response
, 'myapp1.views.home'),
url(r'^admin/', include(admin.site.urls)),
url(r'^robots.txtdomains2_urls.py
Как бы я использовал это в своем промежуточном программном обеспечении? (Я новичок ...)
Комментарии:
1. Это будет работать. Могут быть проблемы с веб-сервером. Опубликуйте конфигурацию вашего веб-сервера
2. Я отредактировал свой пост. Я хотел бы сделать это с помощью промежуточного программного обеспечения, если это возможно, поскольку я ничего не знаю об Apache и тому подобном.
3. Вам нужны разные настройки для разных доменов?
4. Нет. Настройки те же. Но URL-адресов и представлений не будет.
5. Взгляните на промежуточные программы. Внутри промежуточного программного обеспечения вы получите домен и URL. Убедитесь, что домен имеет доступ к этому URL. Затем сделайте перенаправления на основе этого.
Ответ №1:
, lambda r: HttpResponse("User-agent: *nDisallow:", content_type="text/plain")),
]
domains2_urls.py
Как бы я использовал это в своем промежуточном программном обеспечении? (Я новичок ...)
Комментарии:
1. Это будет работать. Могут быть проблемы с веб-сервером. Опубликуйте конфигурацию вашего веб-сервера
2. Я отредактировал свой пост. Я хотел бы сделать это с помощью промежуточного программного обеспечения, если это возможно, поскольку я ничего не знаю об Apache и тому подобном.
3. Вам нужны разные настройки для разных доменов?
4. Нет. Настройки те же. Но URL-адресов и представлений не будет.
5. Взгляните на промежуточные программы. Внутри промежуточного программного обеспечения вы получите домен и URL. Убедитесь, что домен имеет доступ к этому URL. Затем сделайте перенаправления на основе этого.
Ответ №1:
, 'myapp2.views.home'),
url(r'^admin/', include(admin.site.urls)),
url(r'^robots.txtКак бы я использовал это в своем промежуточном программном обеспечении? (Я новичок ...)
Комментарии:
1. Это будет работать. Могут быть проблемы с веб-сервером. Опубликуйте конфигурацию вашего веб-сервера
2. Я отредактировал свой пост. Я хотел бы сделать это с помощью промежуточного программного обеспечения, если это возможно, поскольку я ничего не знаю об Apache и тому подобном.
3. Вам нужны разные настройки для разных доменов?
4. Нет. Настройки те же. Но URL-адресов и представлений не будет.
5. Взгляните на промежуточные программы. Внутри промежуточного программного обеспечения вы получите домен и URL. Убедитесь, что домен имеет доступ к этому URL. Затем сделайте перенаправления на основе этого.
Ответ №1:
, 'myapp1.views.home'),
url(r'^admin/', include(admin.site.urls)),
url(r'^robots.txtdomains2_urls.py
Как бы я использовал это в своем промежуточном программном обеспечении? (Я новичок ...)
Комментарии:
1. Это будет работать. Могут быть проблемы с веб-сервером. Опубликуйте конфигурацию вашего веб-сервера
2. Я отредактировал свой пост. Я хотел бы сделать это с помощью промежуточного программного обеспечения, если это возможно, поскольку я ничего не знаю об Apache и тому подобном.
3. Вам нужны разные настройки для разных доменов?
4. Нет. Настройки те же. Но URL-адресов и представлений не будет.
5. Взгляните на промежуточные программы. Внутри промежуточного программного обеспечения вы получите домен и URL. Убедитесь, что домен имеет доступ к этому URL. Затем сделайте перенаправления на основе этого.
Ответ №1:
, lambda r: HttpResponse("User-agent: *nDisallow:", content_type="text/plain")),
]
domains2_urls.py
Как бы я использовал это в своем промежуточном программном обеспечении? (Я новичок …)
Комментарии:
1. Это будет работать. Могут быть проблемы с веб-сервером. Опубликуйте конфигурацию вашего веб-сервера
2. Я отредактировал свой пост. Я хотел бы сделать это с помощью промежуточного программного обеспечения, если это возможно, поскольку я ничего не знаю об Apache и тому подобном.
3. Вам нужны разные настройки для разных доменов?
4. Нет. Настройки те же. Но URL-адресов и представлений не будет.
5. Взгляните на промежуточные программы. Внутри промежуточного программного обеспечения вы получите домен и URL. Убедитесь, что домен имеет доступ к этому URL. Затем сделайте перенаправления на основе этого.
Ответ №1:
, lambda r: HttpResponse(«User-agent: *nDisallow:», content_type=«text/plain»)),
]Как бы я использовал это в своем промежуточном программном обеспечении? (Я новичок …)
Комментарии:
1. Это будет работать. Могут быть проблемы с веб-сервером. Опубликуйте конфигурацию вашего веб-сервера
2. Я отредактировал свой пост. Я хотел бы сделать это с помощью промежуточного программного обеспечения, если это возможно, поскольку я ничего не знаю об Apache и тому подобном.
3. Вам нужны разные настройки для разных доменов?
4. Нет. Настройки те же. Но URL-адресов и представлений не будет.
5. Взгляните на промежуточные программы. Внутри промежуточного программного обеспечения вы получите домен и URL. Убедитесь, что домен имеет доступ к этому URL. Затем сделайте перенаправления на основе этого.
Ответ №1:
, ‘myapp1.views.home’),
url(r’^admin/’, include(admin.site.urls)),
url(r’^robots.txtdomains2_urls.py
Как бы я использовал это в своем промежуточном программном обеспечении? (Я новичок …)
Комментарии:
1. Это будет работать. Могут быть проблемы с веб-сервером. Опубликуйте конфигурацию вашего веб-сервера
2. Я отредактировал свой пост. Я хотел бы сделать это с помощью промежуточного программного обеспечения, если это возможно, поскольку я ничего не знаю об Apache и тому подобном.
3. Вам нужны разные настройки для разных доменов?
4. Нет. Настройки те же. Но URL-адресов и представлений не будет.
5. Взгляните на промежуточные программы. Внутри промежуточного программного обеспечения вы получите домен и URL. Убедитесь, что домен имеет доступ к этому URL. Затем сделайте перенаправления на основе этого.
Ответ №1:
, lambda r: HttpResponse(«User-agent: *nDisallow:», content_type=«text/plain»)),
]
domains2_urls.py
Как бы я использовал это в своем промежуточном программном обеспечении? (Я новичок …)
Комментарии:
1. Это будет работать. Могут быть проблемы с веб-сервером. Опубликуйте конфигурацию вашего веб-сервера
2. Я отредактировал свой пост. Я хотел бы сделать это с помощью промежуточного программного обеспечения, если это возможно, поскольку я ничего не знаю об Apache и тому подобном.
3. Вам нужны разные настройки для разных доменов?
4. Нет. Настройки те же. Но URL-адресов и представлений не будет.
5. Взгляните на промежуточные программы. Внутри промежуточного программного обеспечения вы получите домен и URL. Убедитесь, что домен имеет доступ к этому URL. Затем сделайте перенаправления на основе этого.