Невозможно правильно назвать статический контент - PullRequest
0 голосов
/ 23 октября 2018

Я начинаю с CherryPy v18.0.1 и застрял в уроке 6, нашел здесь .Я также использую Python v3.7.Я продолжаю получать сообщение об ошибке 404 при вызове моей таблицы style.css из учебника и не уверен, в чем проблема.Я видел, что каталог / static должен быть установлен из соображений безопасности, однако все работает не так, как ожидалось.Вот что я определил:

import os, os.path
import random
import string

import cherrypy


class StringGenerator(object):
@cherrypy.expose
def index(self):
    return """<html>
      <head>
        <link href="style.css" rel="stylesheet">
      </head>
      <body>
        <form method="get" action="generate">
          <input type="text" value="8" name="length" />
          <button type="submit">Show me the number!</button>
        </form>
      </body>
    </html>"""

@cherrypy.expose
def generate(self, length=8):
    some_string = ''.join(random.sample(string.hexdigits, int(length)))
    cherrypy.session['mystring'] = some_string
    return some_string

@cherrypy.expose
def display(self):
    return cherrypy.session['mystring']


if __name__ == '__main__':
conf = {
    '/': {
        'tools.sessions.on': True,
        'tools.staticdir.root': 'C:/python37'
    },
    '/static': {
        'tools.staticdir.on': True,
        'tools.staticdir.dir': 'static/Scripts/css'
    }
}
cherrypy.quickstart(StringGenerator(), '/', conf)

Исходя из моих ограниченных знаний, я устанавливаю корневой каталог как "C: / python37", каталог файлов как "static / Scripts / css" и вызываю таблицу стилейв:

<link href="style.css" rel="stylesheet">

Любое разъяснение по этому вопросу было бы здорово.Спасибо всем заранее.

1 Ответ

0 голосов
/ 24 октября 2018

Из учебника, на который вы ссылались выше:

  • tools.staticdir.root - это «корневой каталог всего нашего статического контента»
  • tools.staticdir.dir is «все URL-адреса [...] начинается с / static и будет служить статическим контентом [...] прямым потомком корневого каталога. "

Это означает, что каталог root должен быть каталогом, в котором находится весь ваш контент (HTML, CSS, изображения, шрифты ...) находится.Не корневая установка Python.

А статический dir - это просто подкаталог в корневом каталоге.Его можно назвать как угодно.CherryPy сопоставляет путь /static, используемый в качестве ключа в словаре конфигурации, с реальным именем в корневом каталоге.

Пример:

conf = {
    '/': {
        'tools.sessions.on': True,
        'tools.staticdir.root': 'C:/users/chad/tutorials/7'
    },
    '/static': {
        'tools.staticdir.on': True,
        'tools.staticdir.dir': 'public-content'
    }
}

Затем в этом примере вы должны создать C:/users/chad/tutorials/7 в качестве корневого каталога для всего статического содержимого с подпапкой с именем public-content и внутри нее любой папки, в которую вы помещаете свои стили, и любого другого общедоступного содержимого.

Для таблицы стилей:вы можете иметь подпапку css в (C:/users/chad/tutorials/7/public-content/css) и поместить вашу style.css внутрь.Вы будете ссылаться на него с помощью:

<link href="/static/css/style.css" rel="stylesheet">
            ======= ###

Путь static (отмеченный =) в URL-адресе происходит от /static, используемого в качестве ключа в файле конфигурации.Путь css (отмеченный #) исходит из папки внутри C:/users/chad/tutorials/7/static-content.

Обратите внимание, что настоящее имя статической папки public-content не отображается в URL-адресах.

Применяя эти правила, вы можете иметь любую желаемую структуру каталогов.Например, если вы хотите изображения в C:/users/chad/tutorials/7/public-content/images, вы будете ссылаться на них следующим образом:

<img src="/static/images/logo.png">
           ====== ######
...