0

Grappelli와 함께 제공되는 TinyMCE 설정을 콘솔에서 볼 수 있습니다. 나는 404가 종료하지 않는다는 것을 안다.하지만 내 모델의 TinyMCE 옵션을 얻으려면 어떻게해야합니까? 내 관리자 패널의 TextField().django-grappelli-tinymce 설정을위한 404

저는 그라 펠리의 기록이 주석에 대해 말한 것을했습니다. 하지만 여전히 실패했습니다

아래에는 admin.py, models.py 및 base.py도 포함되어 있습니다. base.py 실제로 GSWD 튜토리얼

[03/Aug/2013 15:16:41] "GET /uploads/tinymce/jscripts/tiny_mce/tiny_mce.js HTTP/1.1" 404 
[03/Aug/2013 15:16:41] "GET /static/grappelii/tinymce_setup/tinymce_setup.js HTTP/1.1" 404 

내 admin.py

from django.contrib import admin 

from course.models import Course, Content 

class ContentInline(admin.StackedInline): 
    model = Content 
    extra = 1 


class ContentAdmin(admin.ModelAdmin): 
    search_fields = ['topic_name'] 
    prepopulated_fields = {"slug_topic_name": ('topic_name',)} 

    '''class Media: 
     js = [ 
      '/uploads/tinymce/jscripts/tiny_mce/tiny_mce.js', 
      '/static/grappelii/tinymce_setup/tinymce_setup.js', 
      ]''' 

class CourseAdmin(admin.ModelAdmin): 

    fieldsets = [ 
     ('Published',   {'fields': ['published_course']}), 
     (None,   {'fields': ['course_name']}), 
     (None,   {'fields': ['slug']}), 
     ('Date Info', {'fields': ['pub_date']}), 
     (None,   {'fields': ['author']}), 
    ] 
    inlines = [ContentInline] 


    list_display = ['published_course','course_name', 'pub_date', 'was_published_recently'] 
    list_display_links = ['published_course'] 
    list_filter = ['published_course','pub_date', 'author'] 
    #list_editable = ['published_course'] 
    search_fields = ['course_name'] 
    date_hierarchy = 'pub_date' 
    prepopulated_fields = {"slug": ('course_name',)} 

    class Media: 
     js = [ 
      '/uploads/tinymce/jscripts/tiny_mce/tiny_mce.js', 
      '/static/grappelii/tinymce_setup/tinymce_setup.js', 
      ] 

admin.site.register(Course, CourseAdmin) 
admin.site.register(Content, ContentAdmin) 

내 models.py

from django.contrib.auth.models import User 
from django.db import models 
import datetime 
from django.utils import timezone 
from django.template.defaultfilters import slugify 





class PostManager(models.Manager): 
    def live(self): 
     return self.model.objects.filter(published=True) 



class Course(models.Model): 
    course_name = models.CharField(max_length=200) 
    slug = models.SlugField(max_length=200, blank=True, default='') 
    pub_date = models.DateTimeField('date published',default=timezone.now()) 
    author = models.ForeignKey(User, related_name="courses") 
    published_course = models.BooleanField(default=True) 
    objects = PostManager() 

    class Meta: 
     ordering = ["-pub_date", "course_name"] 

    def __unicode__(self): 
     return self.course_name 

    def was_published_recently(self): 
     now = timezone.now() 
     return now - datetime.timedelta(days=1) <= self.pub_date < now 

    was_published_recently.admin_order_field = 'pub_date' 
    was_published_recently.boolean = True 
    was_published_recently.short_description = 'Published recently ?' 

    def save(self, *args, **kwargs): 
     if not self.slug: 
      self.slug = slugify(self.course_name) 
     super(Course, self).save(*args, **kwargs) 

    @models.permalink 
    def get_absolute_url(self): 
     return ("course:detail",(), {"slug": self.slug}) 


class Content(models.Model): 
    course = models.ForeignKey(Course) 
    topic_name = models.CharField(max_length=200) 
    slug_topic_name = models.SlugField(max_length=200, blank=True, default='') 
    desc = models.TextField() 
    published = models.BooleanField(default=True) 
    objects = PostManager() 

    def __unicode__(self): 
     return self.topic_name 

    def save(self, *args, **kwargs): 
     if not self.slug_topic_name: 
      self.slug_topic_name = slugify(self.topic_name) 
     super(Content, self).save(*args, **kwargs) 

    @models.permalink 
    def get_absolute_url(self): 
     return ("content:detail",(), {"slug_topic_name": self.slug_topic_name}) 

에서 언급 한 바와 같이 내 설정 폴더 아래에있는 내 settings.py 내 base.py

# Django settings for kodeworms project. 
import os 

import dj_database_url 
# here() gives us file paths from the root of the system to the directory 
# holding the current file. 
here = lambda * x: os.path.join(os.path.abspath(os.path.dirname(__file__)), *x) 

PROJECT_ROOT = here("..") 
# root() gives us file paths from the root of the system to whatever 
# folder(s) we pass it starting at the parent directory of the current file. 
root = lambda * x: os.path.join(os.path.abspath(PROJECT_ROOT), *x) 



DEBUG = True 
TEMPLATE_DEBUG = DEBUG 

ADMINS = ('dfgdf','dsfdf') 

MANAGERS = ADMINS 

DATABASES = { 
    'default': dj_database_url.config() 
} 

SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https') 

# Hosts/domain names that are valid for this site; required if DEBUG is False 
# See https://docs.djangoproject.com/en/1.5/ref/settings/#allowed-hosts 
ALLOWED_HOSTS = ['http://shielded-cove-4749.herokuapp.com'] 

# Local time zone for this installation. Choices can be found here: 
# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name 
# although not all choices may be available on all operating systems. 
# In a Windows environment this must be set to your system time zone. 
TIME_ZONE = 'Asia/Calcutta' 

# Language code for this installation. All choices can be found here: 
# http://www.i18nguy.com/unicode/language-identifiers.html 
LANGUAGE_CODE = 'en-us' 

SITE_ID = 1 

# If you set this to False, Django will make some optimizations so as not 
# to load the internationalization machinery. 
USE_I18N = True 

# If you set this to False, Django will not format dates, numbers and 
# calendars according to the current locale. 
USE_L10N = True 

# If you set this to False, Django will not use timezone-aware datetimes. 
USE_TZ = True 

# Absolute filesystem path to the directory that will hold user-uploaded files. 
# Example: "/var/www/example.com/media/" 
MEDIA_ROOT = root("..", "uploads") 

# URL that handles the media served from MEDIA_ROOT. Make sure to use a 
# trailing slash. 
# Examples: "http://example.com/media/", "http://media.example.com/" 
MEDIA_URL = '' 

# Absolute path to the directory static files should be collected to. 
# Don't put anything in this directory yourself; store your static files 
# in apps' "static/" subdirectories and in STATICFILES_DIRS. 
# Example: "/var/www/example.com/static/" 
STATIC_ROOT = root("..", "static") 

# URL prefix for static files. 
# Example: "http://example.com/static/", "http://static.example.com/" 
STATIC_URL = '/static/' 

# Additional locations of static files 
STATICFILES_DIRS = (
    root("assets"), 
    # Put strings here, like "/home/html/static" or "C:/www/django/static". 
    # Always use forward slashes, even on Windows. 
    # Don't forget to use absolute paths, not relative paths. 
) 

# List of finder classes that know how to find static files in 
# various locations. 
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.AppDirectoriesFinder', 
    'django.contrib.staticfiles.finders.FileSystemFinder', 
# 'django.contrib.staticfiles.finders.DefaultStorageFinder', 
) 

# Make this unique, and don't share it with anybody. 
SECRET_KEY = '_i^io40lv#0#$!y91a6_f8x+m!$([email protected]([email protected]#=y5u^' 

# List of callables that know how to import templates from various sources. 
TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem.Loader', 
    'django.template.loaders.app_directories.Loader', 
#  'django.template.loaders.eggs.Loader', 
) 

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware', 
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 
    # Uncomment the next line for simple clickjacking protection: 
    'django.middleware.clickjacking.XFrameOptionsMiddleware', 
) 

ROOT_URLCONF = 'kodeworms.urls' 

# Python dotted path to the WSGI application used by Django's runserver. 
WSGI_APPLICATION = 'kodeworms.wsgi.application' 

TEMPLATE_DIRS = (
    root("templates"), 
    # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates". 
    # Always use forward slashes, even on Windows. 
    # Don't forget to use absolute paths, not relative paths. 
) 

DJANGO_APPS = (
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.sites', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    'grappelli', 
    'django.contrib.admin', 
) 
LOCAL_APPS = (
    'course', 
) 

THIRD_PARTY_APPS = (
    'south', 
    #'tinymce' 
) 

INSTALLED_APPS = DJANGO_APPS+LOCAL_APPS+THIRD_PARTY_APPS 

GRAPPELLI_ADMIN_TITLE = u"KodeWorms" 
''' 
TINYMCE_JS_URL = os.path.join(MEDIA_ROOT, "C:/Django/sites/vagrant/projects/kodeworms/static/grappelli/tinymce/jscripts/tiny_mce/tiny_mce.js") 
TINYMCE_JS_ROOT = os.path.join(MEDIA_ROOT, "C:/Django/sites/vagrant/projects/kodeworms/static/grappelli/tinymce/jscripts/tiny_mce/") 
TINYMCE_DEFAULT_CONFIG = { 
    'plugins': "table,spellchecker,paste,searchreplace", 
    'theme': "advanced", 
    'cleanup_on_startup': True, 
    'custom_undo_redo_levels': 10, 
} 
TINYMCE_SPELLCHECKER = True 
''' 

# A sample logging configuration. The only tangible logging 
# performed by this configuration is to send an email to 
# the site admins on every HTTP 500 error when DEBUG=False. 
# See http://docs.djangoproject.com/en/dev/topics/logging for 
# more details on how to customize your logging configuration. 
LOGGING = { 
    'version': 1, 
    'disable_existing_loggers': False, 
    'filters': { 
     'require_debug_false': { 
      '()': 'django.utils.log.RequireDebugFalse' 
     } 
    }, 
    'handlers': { 
     'mail_admins': { 
      'level': 'ERROR', 
      'filters': ['require_debug_false'], 
      'class': 'django.utils.log.AdminEmailHandler' 
     } 
    }, 
    'loggers': { 
     'django.request': { 
      'handlers': ['mail_admins'], 
      'level': 'ERROR', 
      'propagate': True, 
     }, 
    } 
} 
+0

정적 파일도 수집해야합니다. './manage.py collectstatic' –

답변

0

tinymce의 당신의 URL을 잘못 생각합니다./정적/TinyMCE에/jscripts/tiny_mce/tiny_mce grappelli '/ :

당신이 당신의 grappelli 응용 프로그램에 보면 당신이 TinyMCE에를 볼 수는

그래서 이것에 대한 URL을 변경 정적/grappelli/jscripts/TinyMCE에에 .js ', 주석 파일을 사용자 정의하려면이 js 파일 ( #'/static/grappelli/tinymce_setup/tinymce_setup.js ', )을 복사하여 statics 디렉토리에 넣으십시오. '/static/js/textarea.js',

또한 수업 미디어가 견적을 받고 있습니다. 가져 오기를 제거하기 위해 제거하십시오. 도움이되기를 바랍니다.