Российский Новый Университет
Опубликован: 25.01.2016 | Доступ: свободный | Студентов: 2235 / 161 | Длительность: 16:40:00
Лекция 4:

Создание аналога Twitter

Параметры Django для проекта mytweets

Давайте обновим файл settings.py с минимальными настройками, которые нам нужны для нашего проекта mytweets. Прежде чем запускать наше приложение mytweets мы добавим множество параметров, которые мы можем увидеть в следующих изменениях. Для дополнительной информации об этом файле, посетите

https://docs.djangoproject.com/en/1.8/topics/settings/.

Для просмотра полного списка параметров и их значений, посетите

https://docs.djangoproject.com/en/1.8/ref/settings/

Обновите файл settings.py следующим содержимым:

# Стройте пути к проекту как здесь: os.path.join(BASE_DIR, ...)
import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))


# Настройки разработчика для быстрого старта – для производства не годятся
# Посмотрите https://docs.djangoproject.com/en/1.6/howto/deployment/checklist/

# ПРЕДУПРЕЖДЕНИЕ БЕЗОПАСНОСТИ: Сохраняйте секретный ключ, используемый в производстве, в секрете!
SECRET_KEY = 'l@y^@ra9q(ws(amb*-$wyc&_w@)1)s!p4r04rq9od$nr_*3!nx'

# ПРЕДУПРЕЖДЕНИЕ БЕЗОПАСНОСТИ: Не запускайте в производство, если режим отладки включен!
DEBUG = True

TEMPLATE_DEBUG = True

ALLOWED_HOSTS = ['127.0.0.1']

# Определение приложений
INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
)


MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
)

ROOT_URLCONF = 'mytweets.urls'

WSGI_APPLICATION = 'mytweets.wsgi.application'

# База данных
# https://docs.djangoproject.com/en/1.6/ref/settings/#databases

DATABASES = {
	    'default': {
	        'ENGINE': 'django.db.backends.sqlite3',
	        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
	    }
	}

STATICFILES_DIRS = (
os.path.join(
os.path.dirname(__file__),
   'static',
),
)

TEMPLATE_DIRS = (
    BASE_DIR + '/templates/',
)


# 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',
)


# Internationalization
# https://docs.djangoproject.com/en/1.6/topics/i18n/

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True


# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.6/howto/static-files/

STATIC_URL = '/static/'

Теперь, если мы запустим наш сервер разработки, наш экран будет выглядеть так же как и на приведенном скриншоте:


Как мы можем отметить, в шаблоне нет никаких переменных, наличие которые отличает статические страницы, от динамических. Так давайте же сделаем это. Нам нужно внести изменения в файлы views.py и base.html, как показано ниже:

  • Изменения в файле views.py:
    from django.views.generic import View
    from django.shortcuts import render 
    class Index(View):
    def get(self, request): 
    params = {}
    params["name"] = "Django"
    return render(request, 'base.html', params)
    
  • Изменения в файле base.html:
    {% load staticfiles %}
    <html>
    <head>
    <link href="{% static 'bootstrap/css/bootstrap.min.css' %}"
    rel="stylesheet" media="screen">
    </head>
    
    <body>
    {% block content %}
    <h1>ПРИВЕТ {{name}}</h1>
    {% endblock %}
    
    <script src="{% static 'bootstrap/js/bootstrap.min.js' %}"></script>
    </body>
    </html>
    

Видите, как это просто. Все, что мы сделали это просто создали отображение (называемый в Python словарем) и назначили свойству name значение Django и добавили его в функцию render () как новый параметр. Он отрисовывается в основе HTML и легко называется {{name}}. Когда он показывается, он заменяется на Django.

Мы зафиксируем все изменения, что до сих пор сделали. Прежде чем мы сделаем это, давайте создадим файл .gitignore, Все, что он делает, независимо от содержимого этого файла( или подстановки для файлов, которые мы описали внутри файла.gitignore), он предотвратит их от подтверждения изменений и посылает их на сервер подтверждения.

Как это поможет? Это может помочь во многих важных случаях использования. Предположим, что мы не хотим отправлять любые локальные файлы конфигурации на рабочий сервере. Файл .gitignore может быть спасением в таких ситуациях, а также в случае когда файлы .py генерируют свои файлы .pyc, которые компилируются во время выполнения. Нам не нужны эти двоичные файлы на сервере, так как они будут создаваться каждый раз заново при изменении кода

В командной строке Linux просто введите команду $ vim .gitignore в корне каталога c проектом и записать туда *. pyc. Затем, сохраните и выйдите как обычно.

Теперь, если мы выполняем команду git status, мы не увидим ни одного файла с расширением pyc, что означает, что Git игнорирует отслеживания файлов, которые заканчиваются расширением .pyc.

Результат выполнения команды git status может быть следующим:

On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working di-rectory)

        modified:   mytweets/settings.py
        modified:   mytweets/urls.py

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        .gitignore
        .idea/
        db.sqlite3
        mytweets/settings.zip
        templates/
        tweets/

no changes added to commit (use "git add" and/or "git commit -a")

Почти чисто, но так и должно быть. Мы ранее подтверждали файлы settings.py и urls.py, а теперь внесли в них изменения, а в Git для отслеживания не добавили.

Мы используем команду git add . для добавления всех изменений в каталоге. Конечно, для предотвращения ситуации, когда Git отслеживает нежелательные файлы лучше добавлять их по одному, но мы рассмотрим это в продвинутой части разработки. Для добавления требуемого файла в проект, выполните команду:

git add .

Вывод будет следующим:

On branch master Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file:	.gitignore
modified: mytweets/settings.py
modified: mytweets/urls.py
new file: static/css/bootstrap-theme.css
new file: static/css/bootstrap-theme.css.map
new file: static/css/bootstrap-theme.min.css
new file: static/css/bootstrap.css
new file: static/css/bootstrap.css.map
new file: static/css/bootstrap.min.css
new file: static/fonts/glyphicons-halflings-regular.eot 
new file: static/fonts/glyphicons-halflings-regular.svg 
new file: static/fonts/glyphicons-halflings-regular.ttf 
new file: static/fonts/glyphicons-halflings-regular.woff 
new file: static/js/bootstrap.js 
new file: static/js/bootstrap.min.js
 
new file: templates/base.html
new file: tweets/ init .py
new file: tweets/admin.py new file: tweets/models.py new file: tweets/tests.py new file: tweets/views.py

Подтвердите изменения соответствующим сообщением, например "Новое подтверждение".

             git commit -m " Новое подтверждение"

[master 195230b] Новое подтверждение 21 files changed, 9062 inser-tions(+), 1 deletion(-)
create	mode	100644	.gitignore
create	mode	100644	static/css/bootstrap-theme.css
create	mode	100644	static/css/bootstrap-theme.css.map
create	mode	100644	static/css/bootstrap-theme.min.css
create	mode	100644	static/css/bootstrap.css
create	mode	100644	static/css/bootstrap.css.map
create	mode	100644	static/css/bootstrap.min.css
create	mode	100644	static/fonts/glyphicons-halflings-regular.eot
create	mode	100644	static/fonts/glyphicons-halflings-regular.svg
create	mode	100644	static/fonts/glyphicons-halflings-regular.ttf
create	mode	100644	static/fonts/glyphicons-halflings-regular .woff
create	mode	100644	static/js/bootstrap.js
create	mode	100644	static/js/bootstrap.min.js
create	mode	100644	templates/base.html
create	mode	100644	tweets/ init .py
create	mode	100644	tweets/admin.py
create	mode	100644	tweets/models.py
create	mode	100644	tweets/tests.py
create	mode	100644	tweets/views.py
Константин Боталов
Константин Боталов

Вроде легкие вопросы и ответы знаю правильные, но система считает иначе и правильные ответысчитает неправильными. Приходится выполнть по несколько раз. Это я не правильно делаю или тест так составлен?

Владимир Филипенко
Владимир Филипенко

Листинг показывает в 4-ой лекции, что установлен Django 1.8.4. Тут же далее в этой лекции указаны настройки, которые воспринимает Django 1.7 и младше.