2013-12-23 5 views
0

Мой клиент хочет отредактировать css-файлы сайта с администратора django. Есть ли способ сделать это? , В принципе, они хотят, чтобы иметь возможность изменять цвет, шрифт и т. Д. Данных в интерфейсе от интерфейса администратора django.Редактировать css-файлы из django admin

+0

использовать cms вместо – catherine

+1

Да, есть способ сделать это - более одного FWIW. Теперь, что вы пробовали? –

+0

Я googled для приложений, которые делают job.found none.please помогите ему с этим ... –

ответ

3

Лучше всего было бы просто позволить ему отредактировать сам файл css. CSS - это, по сути, довольно гибкий инструмент, поэтому написать способ управления им довольно сложно (и действительно, перехитрить). Это уже легко подбирать, и любой красивый редактор вроде sublime или notepad++, вероятно, был бы более простым и естественным, чем все, что вы будете строить с помощью сайта администратора. Кроме того, создав простой способ управления css, ваш клиент, вероятно, начнет запрашивать все больше и больше гибкости, пока не найдет себе создание целого cms (поверьте мне, я был там сам).

Кроме того, ваш клиент, вероятно, хочет только управлять небольшими аспектами или деталями сайта. Недавно у меня был проект, в котором я разрешил своим пользователям настраивать отображение своего приложения. То, как я это делал, было создание модели UserDesign, которая расширила базовую модель пользователя и сохранила очень специфичные данные css. Что-то вроде этого:

class UserDesign(models.Model): 
    user = models.OneToOneField(User) 
    background_color = models.CharField(max_length=15) 
    font_color = models.CharField(max_length=20, choices=COLORS) 
    theme = models.CharField(max_length=20, choices=THEMES) 

Значение, они не контролируют полноту CSS, но они не получают, чтобы выбрать цвет фона и некоторую другую информацию. Это очень аккуратное дополнение к любому сайту. Однако, если вы согнувшись делать это трудный путь, я бы что-то вроде этого:

class Selector(models.Model): 
    name = models.CharField(max_length=30) 

    def get_template(self): 
     attrs = [a.join() for a in self.attr_set.all()] 
     return """ %s { %s } """ % (self.name, ';'.join(attrs)) 


class Attr(models.Model): 
    key = models.CharField(max_length=30) 
    value = models.CharField(max_length=30) 
    selector = models.ForeignKey(Selector) 

    def join(self): 
     return ': '.join(self.key, self.value) 

я выбрал 30 как max_length совершенно произвольно (возможно, вам нужно больше), и вы можете использовать TabularInline чтобы сделать каждый селектор простым в управлении. Тогда вы можете легко использовать различные определения CSS в шаблонах себя:

<style> 
{% for selector in selectors %} 
    {{ selector.get_template }} 
{% endfor %} 
</style> 

Конечно, модель выбора, вероятно, потребуется еще одно поле под названием «шаблон» или «вид» или что-то, чтобы связать его с определенным HTML файла , хотя в этот момент он быстро начинает превращаться в создание собственных cms (что, как уже упоминалось ранее, является довольно головной болью, которая не требует редактирования текстового файла, просто не оправдывает)

Третьим жизнеспособным вариантом является создание представление с помощью редактора кода и просто позвольте клиенту редактировать его css через веб-страницу. Там более чем достаточно клиентских плагинов, таких как ace или codemirror (и, конечно же, ограничивайте это представление администраторами, что очень просто сделать).

+0

спасибо, что было полезно ... но сначала я попытаюсь убедить своего клиента не сделай это :) –

Смежные вопросы