Я пытаюсь развернуть свое приложение django на субдомене, скажем, example.djangoapp.com, все работает отлично, за исключением моего сайта администратора django, когда я нажимаю ссылку, которая идет на админ-сайт, он перенаправляет другой URL-адрес. Это происходит, когда я использую тег шаблона url admin, т. Е. Он перенаправляется на djangoapp.com/index вместо example.djangoapp.index.fcgi/login (который является сайтом администратора).Django не служит для администрирования статических файлов с помощью fastcgi
После удаления тега шаблона шаблона admin я устанавливаю абсолютный URL-адрес для перенаправления на сайт администратора, эта работа прекрасна, и появляется сайт администратора, но его статические файлы не подаются. Так что я стоп между ними.
Я развертывание на сервере, который работает FastCGI на хостинг
Моих вопросов:
1) Вариант 1 (с помощью администратора шаблона URL тега):
Как я получить Джанго перенаправлять меня на правильный сайт администратора (www.example.djangoapp.index.fcgi/login) вместо перенаправления меня на (www.djangoapp.com/index).
2) При использовании абсолютного URL: Теперь я жестко закодировал ссылку администратора на моей домашней странице индекса шаблона, это прекрасно работает, но статические файлы admin django не обслуживаются. Как их можно обслуживать?
Простите мое невежество, но я боролся с этим в течение нескольких недель. Я решил жестко запрограммировать URL-адрес, но все же статические файлы администраторских сайтов не обслуживаются.
Ниже приведены мои settings.py, urls.py и index.html (где я жестко закодировал URL-адрес админ-сайта). Этот код является встроенным с опцией 2 выше, которая имеет URL-адрес жесткого кода администратора.
settings.py
WSGI_APPLICATION = 'cconnect_web.wsgi.application'
# Database
# https://docs.djangoproject.com/en/1.8/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': '',
'USER': '',
'PASSWORD': '',
'HOST': '',
'PORT': '',
'CONN_MAX_AGE': 3600,
}
}
# Internationalization
# https://docs.djangoproject.com/en/1.8/topics/i18n/
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'Africa/Cairo'
USE_I18N = True
USE_L10N = True
USE_TZ = True
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.8/howto/static-files/
STATIC_URL = '/cconnect/static/'
STATIC_ROOT = '/home4/techaven/public_html/cconnect/static'
FORCE_SCRIPT_NAME="/index.fcgi/"
Urls.py
from django.conf.urls import *
from django.conf.urls import include, url
from django.contrib import admin
from cconnect_frontEnd import views
from . import settings
#app_name = 'cconnect_frontEnd
urlpatterns = [
url(r'^$', views.index, name ='index'),
url(r'^backend/', include('Back_End.urls')),
url(r'^admin/', include(admin.site.urls)),
url(r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root':settings.STATIC_ROOT}),
]
urlpatterns += patterns('Back_End.views',
(r'^login/$', 'login_view'),
)
admin.site.site_header = 'Cconnect Administration.'
index.html
<body>
<div class="header-wrapper">
<nav>
<div class=nav-wrapper">
{% load staticfiles %}
<img src="{% static "cconnect_frontEnd/images/slide/logo.png" %}" alt="Conference Connect"/>
<ul class="right hide-on-med-and-down">
{% load admin_urls %}
<li><a href="http://cconnect.techavenue137.rw/index.fcgi/admin">Sign In</a></li>
<li><a href="#feature-title">Features</a></li>
<li><a href="#demo-video">Videos</a></li>
</ul>
index.fcgi
import os
import sys
from flup.server.fcgi import WSGIServer
from django.core.wsgi import get_wsgi_application
sys.path.insert(0, "/home4/techaven/public_html/cconnect/cconnect_web/")
os.chdir("/home4/techaven/public_html/cconnect/cconnect_web")
os.environ['DJANGO_SETTINGS_MODULE'] = "cconnect_web.settings"
WSGIServer(get_wsgi_application()).run()
.htaccess
AddHandler fcgid-script .fcgi
DirectoryIndex index.fcgi
RewriteEngine On
RewriteCond %{HTTP_HOST} ^cconnect\.techavenue137\.rw$ [OR]
RewriteCond %{HTTP_HOST} ^www\.cconnect\.techavenue137\.rw$
RewriteRule ^/?$ "http\:\/\/www\.techavenue137\.rw\/cconnect\/index\.fcgi" [R=301,L]
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /cconnect/
RewriteRule ^index\.fcgi$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
#RewriteCond %{REQUEST_URI} !^/static/
RewriteRule ^(.*)$ /cconnect/index.fcgi/$1 [L]
</IfModule>
Спасибо за вашу помощь и еще раз простите мои глупые вопросы.
Ваши вопросы не глупы. Во-первых, я предполагаю, что вы собрали статические файлы ('python manage.py collectstatic'). Во-вторых, ваш веб-сервер настроен на обслуживание файлов? (например, Nginx должен иметь «location/cconect/static /», а «alias» - ваш статический корень). Что произойдет, если вы попробуете его с помощью dev-сервера? ('python manage.py runningerver') Если он не отображается, проверьте сообщение об ошибке. –
спасибо keenan, да, мой сервер настроен на обслуживание статических файлов, на dev-сервере все работает отлично, обслуживаются сайты-администраторы. на производственном сервере обслуживаются только другие статические файлы, а статические файлы административного сайта не обслуживаются. Я думаю, что ошибка в маршрутизации URL. И я не знаю, как это сделать. – Arnold
А, ладно. Да, проблема связана с маршрутизацией URL. Что такое код ошибки при проверке отсутствующих элементов? Это 404, 403, 500? Кроме того, можете ли вы опубликовать конфигурацию своего веб-сервера для приложения? –