PyNanoCMS


NamePyNanoCMS JSON
Version 0.4.2 PyPI version JSON
download
home_pagehttps://github.com/rombr/pynano
SummaryStatic site generator
upload_time2024-07-28 19:57:21
maintainerNone
docs_urlNone
authorRoman Bondar
requires_python>=3.9
licenseBSD-3-Clause
keywords http static site generator
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # PyNanoCMS

Статичный сайт генерируется в папку `<site>_static`. Её
содержимое помещается на сервер и будет доступно пользователю,
заходящему на сайт.

### Структура папок.

* Папка `templates` содержит шаблоны сайта
* Папка `static` содержит файлы, необходимые для отображения сайта (CSS, Java Script)
* Папка `other` содержит прочие файлы и папки, которые нужно разместить на сайте как есть. Например, `favicon.ico`, `robots.txt` и т. д. При генерации они все будут автоматически скопированы в папку `<site>_static`.

### Конфигурация

Файл `pages.json` содержит описания страниц. Например:
```json
[
{
    "url": "/help/",
    "page_id": "help",
    "context": {},
    "template": "help.html"
}
]
```

Где:

* `url` - адрес страницы на сайте;
* `page_id` - уникальный идентификатор страницы, состоящий из букв латиницы, цифр и подчеркиваний.
Используется в шаблонах для указания адреса страницы, например, `<a href="{{ urls.help }}">Помощь</a>`.
* `context` - дополнительный контекст для передачи в шаблон.
Например, `"context": {"cost": "10 руб."}`, в шаблоне может быть исрользован как `{{ cost }}`.
* `template` - шаблон страницы, у разных страниц может быть один шаблон, шаблоны можно организовать в папки и тогда писать соответственно, например, `"template\": "help/help.html"`.

### Генерация

Для запуска генерации служит `pyNanoCMS.exe` Файл `pynano.log`, сюда пишутся
ошибки, если происходят.

При перегенерации меняются только те файлы, которые реально изменились.

### Live-сервер

Если запустить команду с опцией `--serve` (короткий вариант `-s`), то по
адресу `<http://127.0.0.1:8000/>` будет доступна сгенерированная версия
сайта, причем при любом изменении исходных файлов сайт будет
автоматически регенерироваться.

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/rombr/pynano",
    "name": "PyNanoCMS",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": null,
    "keywords": "HTTP, static site generator",
    "author": "Roman Bondar",
    "author_email": "rombr5@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/24/b5/c54e9a8827fc5b4ccac7c8006b6096cc1e50c6012a0caa8eeb7af662eb01/pynanocms-0.4.2.tar.gz",
    "platform": null,
    "description": "# PyNanoCMS\n\n\u0421\u0442\u0430\u0442\u0438\u0447\u043d\u044b\u0439 \u0441\u0430\u0439\u0442 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u043f\u0430\u043f\u043a\u0443 `<site>_static`. \u0415\u0451\n\u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440 \u0438 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e,\n\u0437\u0430\u0445\u043e\u0434\u044f\u0449\u0435\u043c\u0443 \u043d\u0430 \u0441\u0430\u0439\u0442.\n\n### \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043f\u0430\u043f\u043e\u043a.\n\n* \u041f\u0430\u043f\u043a\u0430 `templates` \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u0441\u0430\u0439\u0442\u0430\n* \u041f\u0430\u043f\u043a\u0430 `static` \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0444\u0430\u0439\u043b\u044b, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441\u0430\u0439\u0442\u0430 (CSS, Java Script)\n* \u041f\u0430\u043f\u043a\u0430 `other` \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043f\u0440\u043e\u0447\u0438\u0435 \u0444\u0430\u0439\u043b\u044b \u0438 \u043f\u0430\u043f\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0443\u0436\u043d\u043e \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u043a\u0430\u043a \u0435\u0441\u0442\u044c. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, `favicon.ico`, `robots.txt` \u0438 \u0442. \u0434. \u041f\u0440\u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043e\u043d\u0438 \u0432\u0441\u0435 \u0431\u0443\u0434\u0443\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0432 \u043f\u0430\u043f\u043a\u0443 `<site>_static`.\n\n### \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f\n\n\u0424\u0430\u0439\u043b `pages.json` \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:\n```json\n[\n{\n    \"url\": \"/help/\",\n    \"page_id\": \"help\",\n    \"context\": {},\n    \"template\": \"help.html\"\n}\n]\n```\n\n\u0413\u0434\u0435:\n\n* `url` - \u0430\u0434\u0440\u0435\u0441 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043d\u0430 \u0441\u0430\u0439\u0442\u0435;\n* `page_id` - \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u0438\u0437 \u0431\u0443\u043a\u0432 \u043b\u0430\u0442\u0438\u043d\u0438\u0446\u044b, \u0446\u0438\u0444\u0440 \u0438 \u043f\u043e\u0434\u0447\u0435\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u0439.\n\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u0445 \u0434\u043b\u044f \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0430\u0434\u0440\u0435\u0441\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, `<a href=\"{{ urls.help }}\">\u041f\u043e\u043c\u043e\u0449\u044c</a>`.\n* `context` - \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0432 \u0448\u0430\u0431\u043b\u043e\u043d.\n\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, `\"context\": {\"cost\": \"10 \u0440\u0443\u0431.\"}`, \u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u0440\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d \u043a\u0430\u043a `{{ cost }}`.\n* `template` - \u0448\u0430\u0431\u043b\u043e\u043d \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0443 \u0440\u0430\u0437\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0434\u0438\u043d \u0448\u0430\u0431\u043b\u043e\u043d, \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u043c\u043e\u0436\u043d\u043e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u043f\u0430\u043f\u043a\u0438 \u0438 \u0442\u043e\u0433\u0434\u0430 \u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, `\"template\\\": \"help/help.html\"`.\n\n### \u0413\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f\n\n\u0414\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0441\u043b\u0443\u0436\u0438\u0442 `pyNanoCMS.exe` \u0424\u0430\u0439\u043b `pynano.log`, \u0441\u044e\u0434\u0430 \u043f\u0438\u0448\u0443\u0442\u0441\u044f\n\u043e\u0448\u0438\u0431\u043a\u0438, \u0435\u0441\u043b\u0438 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0442.\n\n\u041f\u0440\u0438 \u043f\u0435\u0440\u0435\u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435 \u0444\u0430\u0439\u043b\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0438\u0441\u044c.\n\n### Live-\u0441\u0435\u0440\u0432\u0435\u0440\n\n\u0415\u0441\u043b\u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0441 \u043e\u043f\u0446\u0438\u0435\u0439 `--serve` (\u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 `-s`), \u0442\u043e \u043f\u043e\n\u0430\u0434\u0440\u0435\u0441\u0443 `<http://127.0.0.1:8000/>` \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f\n\u0441\u0430\u0439\u0442\u0430, \u043f\u0440\u0438\u0447\u0435\u043c \u043f\u0440\u0438 \u043b\u044e\u0431\u043e\u043c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0441\u0430\u0439\u0442 \u0431\u0443\u0434\u0435\u0442\n\u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0440\u0435\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f.\n",
    "bugtrack_url": null,
    "license": "BSD-3-Clause",
    "summary": "Static site generator",
    "version": "0.4.2",
    "project_urls": {
        "Homepage": "https://github.com/rombr/pynano"
    },
    "split_keywords": [
        "http",
        " static site generator"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e643826edf8befe918d62a113434d00d52f64dbe58c13dc9684c02052d5acdcb",
                "md5": "8bd095ef2eff21269598d067196f6060",
                "sha256": "60d84e32f46e1d88a9cac649c6a4942e5b98031939a9362c887e9b9491de4ebb"
            },
            "downloads": -1,
            "filename": "pynanocms-0.4.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "8bd095ef2eff21269598d067196f6060",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9",
            "size": 7387484,
            "upload_time": "2024-07-28T19:57:16",
            "upload_time_iso_8601": "2024-07-28T19:57:16.189805Z",
            "url": "https://files.pythonhosted.org/packages/e6/43/826edf8befe918d62a113434d00d52f64dbe58c13dc9684c02052d5acdcb/pynanocms-0.4.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "24b5c54e9a8827fc5b4ccac7c8006b6096cc1e50c6012a0caa8eeb7af662eb01",
                "md5": "22de1c5916898102d96e3f98af500ae2",
                "sha256": "5608b9fbcc6775b7da5e83e203795d53106460395760a6c382c4200ebc356d8e"
            },
            "downloads": -1,
            "filename": "pynanocms-0.4.2.tar.gz",
            "has_sig": false,
            "md5_digest": "22de1c5916898102d96e3f98af500ae2",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 7388727,
            "upload_time": "2024-07-28T19:57:21",
            "upload_time_iso_8601": "2024-07-28T19:57:21.915198Z",
            "url": "https://files.pythonhosted.org/packages/24/b5/c54e9a8827fc5b4ccac7c8006b6096cc1e50c6012a0caa8eeb7af662eb01/pynanocms-0.4.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-07-28 19:57:21",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "rombr",
    "github_project": "pynano",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "pynanocms"
}
        
Elapsed time: 0.51167s