рдпрд╣ рдЖрд▓реЗрдЦ рд╡реЗрдм-рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрднрд┐рдкреНрд░реЗрдд рд╣реИ рдФрд░
рдЯреНрд╡рд┐рдЯрд░ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ
Django рдкрд░ рдПрдХ рдмреНрд▓реЙрдЧ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЛ рдХрд╡рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдореБрдлреНрдд рд╣реЛрд╕реНрдЯрд┐рдВрдЧ
рдкрд╛рдпрдердирдСрдирдПрдпрд░ рдкрд░ рдЗрд╕рдХреА рддреИрдирд╛рддреА рд╣реИред рдореИрдВрдиреЗ рдпрдерд╛рд╕рдВрднрд╡ рд╕рд░рд▓ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдпрд╣ рдкрдврд╝рдирд╛ рдЕрдзрд┐рдХ рдЕрдиреБрднрд╡реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдХреБрдЫ рднреА рдирдпрд╛ рдирд╣реАрдВ рдмрддрд╛рдПрдЧрд╛, рдФрд░ рдХреБрдЫ рддрд░рдХреАрдм рдЕрдкреНрд░рднрд╛рд╡реА рд▓рдЧ рд╕рдХрддреЗ рд╣реИрдВред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкрд╛рдардХ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд╛рдпрдерди рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИ, Django рдХреА рдХрдо рд╕реЗ рдХрдо рд╕рдордЭ рд╣реИ (рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП, рд╕рдВрдмрдВрдзрд┐рдд рд╡рд┐рд╖рдп рдкрд░
http://codeacademy.com рдкрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдирд╛ рдФрд░
Django рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдкрдврд╝рдирд╛) рдЕрдЪреНрдЫрд╛ рд╣реИ, рдФрд░ рдпрд╣ рднреА рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рд╣реИред
рддреЛ, рд╣рдо рд╕реНрдерд╛рдиреАрдп рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдХрд╛рдо рдХреЗ рдорд╛рд╣реМрд▓ рдХреЗ рд╕рдВрдЧрдарди рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдХреЛрдИ рднреА рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдЖрд╢реНрд╡рд╕реНрдд рдорд╣рд╕реВрд╕ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдорд╛рд░реЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИ, рдпрд╣рд╛рдВ рдореИрдВ GNU / Linux рдХреЗ рд▓рд┐рдП рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдЕрдиреНрдп рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЪрд░рдг рдереЛрдбрд╝реЗ рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд░реНрдЪреБрдЕрдирд╡ рдХреЛ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП - рдПрдХ рдкреГрдердХ рдХрд╛рд░реНрдпрд╢реАрд▓ рд╡рд╛рддрд╛рд╡рд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛ (рддрд╛рдХрд┐ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЕрдиреНрдп рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╣рд╕реНрддрдХреНрд╖реЗрдк рди рдХрд░реЗрдВ)ред
рдкрд░реНрдпрд╛рд╡рд░рдг рдмрдирд╛рдПрдВ рдФрд░ рд╕рдХреНрд░рд┐рдп рдХрд░реЗрдВ:
mkdir ~/projects cd ~/projects virtualenv env source env/bin/activate
рд╡рд┐рдВрдбреЛрдЬ рдкрд░, рдЕрдВрддрд┐рдо рдХрдорд╛рдВрдб рдЗрд╕ рддрд░рд╣ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП:
env\Scripts\activate
рдкрд╛рдЗрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ Django рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ, рдкрд╛рдпрдерди рдкреИрдХреЗрдЬ рдореИрдиреЗрдЬрд░ред
pip install django
рдПрдХ рдирдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВред рдЪрд▓реЛ рдЗрд╕реЗ рдХрд┐рд╕реА рддрд░рд╣ рдореВрд▓ рдХрд╣рддреЗ рд╣реИрдВ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдорд╛рдЗрд╕рд╛рдЗрдЯред
django-admin.py startproject mysite && cd mysite
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓реЗрдЧреА рдФрд░ рдПрдХ рдЕрдиреНрдп mysite рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдФрд░ рдХреБрдЫ * .py рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ mysite рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдПрдЧреАред
рд╣рдо рдПрдХ django рдПрдкреНрд▓реАрдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП manage.py рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдмреНрд▓реЙрдЧ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
python manage.py startapp blog
Mysite / settings.py рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ (рдзреНрдпрд╛рди рджреЗрдВ: рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ ~ / рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ / mysite / mysite / settings.py) рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝реЗрдВ:
рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ, рд╣рдо рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рднреНрд░рдо рдФрд░ рдЧреНрд▓рд┐рдЪ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЗрд╕реЗ рд╕рднреА рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрдиреАрдп * .py рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ, рдХреНрд░рдорд╢рдГ рдЙрдиреНрд╣реЗрдВ рдпреВрдЯреАрдПрдл -8 рдореЗрдВ рдкреБрди: рд▓реЛрдб рдХрд░рддрд╛ рд╣реВрдВред
рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рдкрде BASE_DIR рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рддрд╛рдХрд┐ рдЖрдЧреЗ рдХреЗ рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд▓рд┐рдП рд╕рд╛рдкреЗрдХреНрд╖ рдкрде рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ
рдЪрд▓реЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдорд╛рд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ SQLite рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХрд╛рдлреА рд╕рдВрднрд╡ рд╣реИ
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } }
рд╕рдордп рдХреНрд╖реЗрддреНрд░ рдФрд░ рднрд╛рд╖рд╛ рд╕реЗрдЯ рдХрд░реЗрдВ:
TIME_ZONE = 'Europe/Moscow' LANGUAGE_CODE = 'ru-ru'
Django рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП, INSTALLED_APPS tuple рдореЗрдВ 'рдмреНрд▓реЙрдЧ' рдЬреЛрдбрд╝реЗрдВ, рдФрд░ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреИрдирд▓ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрди 'django.contrib.admin' рдХреЛ рднреА рдЕрдирдХрдВрдлрд░реНрдЯ рдХрд░реЗрдВ:
INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.admin', 'blog', )
рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, mysite / urls.py рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ
from django.conf.urls import patterns, include, url from django.contrib import admin admin.autodiscover()
рдмреНрд▓реЙрдЧ / model.py рдореЗрдВ рдПрдХ рдореЙрдбрд▓ рдмрдирд╛рдПрдБ
from django.db import models class Post(models.Model): title = models.CharField(max_length=255)
рдЗрд╕ рдореЙрдбрд▓ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, Django рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЯреЗрдмрд▓ рдмрдирд╛рдПрдЧрд╛ред
рд╣рдо рдЗрд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдмреНрд▓реЙрдЧ / admin.py рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд░рддреЗ рд╣реИрдВ
from django.contrib import admin from blog.models import Post
рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдЯреЗрдмрд▓ рдмрдирд╛рдПрдВ:
python manage.py syncdb
рдЗрд╕ рдХрдорд╛рдВрдб рдХреЗ рдкрд╣рд▓реЗ рдХреЙрд▓ рдкрд░, Django рдПрдХ рд╕реБрдкрд░рдпреБрд╕рд░ рдмрдирд╛рдиреЗ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░реЗрдЧрд╛, рд╣рдо рдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
Django рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдбреАрдмрдЧ рд╕рд░реНрд╡рд░ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ:
python manage.py runserver
рдЕрдм рдмреНрд░рд╛рдЙрдЬрд░ рдореЗрдВ url рдбрд╛рд▓реЗрдВ
http: // рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ: 8000 / рдПрдбрдорд┐рди /рдпрджрд┐ рд╕рдм рдХреБрдЫ рдареАрдХ рд░рд╣рд╛, рддреЛ рд╣рдореЗрдВ рдпрд╣ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:

рд╣рдо рдкрд╣рд▓реЗ рдмрдирд╛рдП рдЧрдП рд▓реЙрдЧрд┐рди / рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рд╕рд╛рде рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреИрдирд▓ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ - рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреЛрд╕реНрдЯ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рд╣рдЯрд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ (рдкреЛрд╕реНрдЯ рдХреЗ рджрд╛рдИрдВ рдУрд░ рдмрдЯрди)
рдбреАрдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкреЛрд╕реНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВред
рдЕрдм рд╣рдо рдлреНрд░рдВрдЯрдПрдВрдб рдмрдирд╛рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рд╣рдореЗрдВ рдХреЗрд╡рд▓ рджреЛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдкреЗрдЬ рдЪрд╛рд╣рд┐рдП - рдПрдХ рд╕рднреА рдкреЛрд╕реНрдЯ рдХреА рд╕реВрдЪреА рдХреЗ рд╕рд╛рде, рджреВрд╕рд░рд╛ - рдкреЛрд╕реНрдЯ рдХреА рд╕рд╛рдордЧреНрд░реАред
рдмреНрд▓реЙрдЧ / рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛
from blog.models import Post from django.views.generic import ListView, DetailView class PostsListView(ListView):
Urlpatterns mysite / urls.py рдореЗрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЬреЛрдбрд╝реЗрдВ
url(r'^blog/', include('blog.urls')),
рдмреНрд▓реЙрдЧ рдореЙрдбреНрдпреВрд▓ рд╕реЗ urls.py рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ / рдмреНрд▓реЙрдЧ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА URL рдХреЗ рд▓рд┐рдП, рдФрд░ рдирд┐рдореНрди рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдмреНрд▓реЙрдЧ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ urls.py рдлрд╝рд╛рдЗрд▓ рд╕реНрд╡рдпрдВ рдмрдирд╛рдПрдВ:
рдЕрдм рдЖрдкрдХреЛ рдкреЗрдЬ рдЯреЗрдореНрдкрд▓реЗрдЯ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, PostListView рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП, Django рдмреНрд▓реЙрдЧ / рдЯреЗрдореНрдкреНрд▓реЗрдЯ / рдмреНрд▓реЙрдЧ / post_list.html рдореЗрдВ рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреА рддрд▓рд╛рд╢ рдХрд░реЗрдЧрд╛ (рдРрд╕рд╛ рд▓рдВрдмрд╛ рдФрд░ рдЕрдЬреАрдм рддрд░реАрдХрд╛ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рдбреЗрд╡рд▓рдкрд░ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдЗрд╕реЗ рд╕реНрдкрд░реНрд╢ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛)
рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ:
{% block content %} {% for post in object_list %} <p>{{ post.datetime }}</p> <h2><a href="{{ post.get_absolute_url }}">{{ post.title }}</a></h2> <p>{{ post.content }}</p> {% empty %} <p> </p> {% endfor %} {% endblock %}
рдЦреИрд░, рдЖрдЗрдП
http: // localhost: 8000 / blog / рдкрд░ URL рдкрд░ рдЬрд╛рдХрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╣рдо рдЙрди рдкрджреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рджреЗрдЦреЗрдВрдЧреЗ рдЬрд╣рд╛рдВ рдкреНрд░рддреНрдпреЗрдХ рдкреЛрд╕реНрдЯ рдХрд╛ рд╢реАрд░реНрд╖рдХ рдПрдХ рд▓рд┐рдВрдХ рд╣реИред
рдЬрдм рддрдХ рдпреЗ рд▓рд┐рдВрдХ рдХрд╣реАрдВ рдирд╣реАрдВ рдЬрд╛рддреЗ, рдЖрдкрдХреЛ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, PostDetailView рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП, рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдмреНрд▓реЙрдЧ \ рдЯреЗрдореНрдкрд▓реЗрдЯ \ рдмреНрд▓реЙрдЧ \ post_detail.html рдореЗрдВ рд╣реИред
рдЗрд╕реЗ рдмрдирд╛рдПрдВ:
{% block content %} <p>{{ post.datetime }}</p> <h2>{{ post.title }}</h2> <p>{{ post.content }}</p> {% endblock %}
рдФрд░ рдлрд┐рд░ рд╕реЗ рдЬрд╛рдБрдЪ рдХрд░реЗрдВ:
http: // localhost: 8000 / рдмреНрд▓реЙрдЧ / 1 /рд╣рдо рдЕрдкрдиреА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝реЗрдВрдЧреЗ, рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рд╣рдо
DISQUS рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕реЗ рд╣рдо рдкрд╛рдЗрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВрдЧреЗ
pip install django-disqus
рдпрд╣ рдореЙрдбреНрдпреВрд▓ рд╕реНрдкреИрдо, рдЕрд╡рддрд╛рд░ рдФрд░ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд╕рд╛рде рдЯрд┐рдкреНрдкрдгреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЙрдирдХреЗ рднрдВрдбрд╛рд░рдг рдХрд╛ рднреА рдзреНрдпрд╛рди рд░рдЦрддрд╛ рд╣реИ:
{% рдПрдВрдбрдмреНрд▓реЙрдХ%} рд╕реЗ рдкрд╣рд▓реЗ post_detail.html рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ
<p> {% load disqus_tags %} {% disqus_dev %} {% disqus_show_comments %} </p>
INSTALLED_APPS рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ 'рдбрд┐рд╕рдХрд╕' рдлрд╝рд╛рдЗрд▓ рдЬреЛрдбрд╝реЗрдВ
INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.admin', 'blog', 'disqus', )
рдФрд░ settings.py рднреА рдЬреЛрдбрд╝реЗрдВ
DISQUS_API_KEY = '***' DISQUS_WEBSITE_SHORTNAME = '***'
рдЕрдВрддрд┐рдо рджреЛ рдорд╛рди
http://disqus.com рдкрд░ рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЧрдП рд╣реИрдВред
рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ред рдареАрдХ рд╣реИ, рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдбрд┐рдЬрд╛рдЗрди рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдЖрдзреБрдирд┐рдХ рд╡рд┐рдХрд▓реНрдк рдЯреНрд╡рд┐рдЯрд░ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред
рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ
http://twitter.imtqy.com/bootstrap/assets/bootstrap.zip рдФрд░ рдЗрд╕реЗ рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╕реНрдерд┐рд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдЕрдирдЬрд╝рд┐рдк рдХрд░реЗрдВ (рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ ~ / рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ / mysite / рд╕реНрдерд┐рд░ - рдЗрд╕реЗ рдмрдирд╛рдПрдВ)
рд╣рдо рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ Django рдХреЛ рдкрддрд╛ рдЪрд▓ рдЬрд╛рдП рдХрд┐ рд╕реНрдереИрддрд┐рдХ рдкреГрд╖реНрдареЛрдВ рдХреЛ рдХрд╣рд╛рдВ рджреЗрдЦрдирд╛ рд╣реИред
STATICFILES_DIRS = ( os.path.join(BASE_DIR, 'static'), )
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмреНрд▓реЙрдЧ / рдЯреЗрдореНрдкреНрд▓реЗрдЯ / рдмреНрд▓реЙрдЧ / рдмреЗрд╕.html рдмрдирд╛рдПрдБ
<!DOCTYPE html> <html lang="ru"> <head> <meta charset="utf-8" /> <title>MyBlog</title> <link href="{{STATIC_URL}}bootstrap/css/bootstrap.css" rel="stylesheet"> <style> body { padding-top: 60px; } </style> <link href="{{STATIC_URL}}bootstrap/css/bootstrap-responsive.css" rel="stylesheet"> <script src="{{STATIC_URL}}bootstrap/js/bootstrap.js" type="text/javascript"></script> {% block extrahead %} {% endblock %} <script type="text/javascript"> $(function(){ {% block jquery %} {% endblock %} }); </script> </head> <body> <div class="navbar navbar-inverse navbar-fixed-top"> <div class="navbar-inner"> <div class="container"> <div class="brand">My Blog</div> <ul class="nav"> <li><a href="{% url 'list' %}" class=""> </a></li> </ul> </div> </div> </div> <div class="container"> {% block content %}Empty page{% endblock %} </div> </body> </html>
рдпрд╣ рд╣рдорд╛рд░реЗ рдкреГрд╖реНрдареЛрдВ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╣реИ, рд╣рдо рдЗрд╕реЗ post_list.html рдФрд░ post_detail.html рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рддреЗ рд╣реИрдВ, рдЙрдирдореЗрдВ рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:
{% extends 'blog/base.html' %}
рд╣рдо рдкреНрд░рджрд░реНрд╢рди рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВред рдЕрдм рд╕реБрдВрджрд░рддрд╛ рдХреЛ рд▓рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЖрдк рдПрдХ рдореБрдлреНрдд рдХреНрд▓рд╛рдЙрдб рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рддреИрдирд╛рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
PythonAnywhere рдкрд░ рдПрдХ рдореБрдлреНрдд
N00b рдЦрд╛рддрд╛ рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВред рдореБрдЭреЗ рдпрд╣ рд╕реЗрд╡рд╛ рдкрд╕рдВрдж рдЖрдИ рдХреНрдпреЛрдВрдХрд┐ Django рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рд╕рдм рдХреБрдЫ рд╕реНрдерд╛рдиреАрдп рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рд▓рдЧрднрдЧ рд╡реИрд╕рд╛ рд╣реА рд╣реЛрддрд╛ рд╣реИред
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдордиреЗ PyjonAnywhere рдореЗрдВ djangotest рдирд╛рдо рд╕реЗ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрдирд╛рдпрд╛ рд╣реИ, рддреЛ рд╣рдорд╛рд░рд╛ рдЖрд╡реЗрджрди
djangotest.pythonanywhere.com рдкрд░
рд╣реЛрдЧрд╛ ред рдзреНрдпрд╛рди рджреЗрдВ: djangotest рдкрд╛рда рдХреЛ PythonAnywhere рдореЗрдВ рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдХреЗ рд╕рд╛рде рдмрджрд▓реЗрдВред
рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдмрджрд▓реЗрдВ
DEBUG = False
рдФрд░ рдЬреЛрдбрд╝реЗрдВ
ALLOWED_HOSTS = ['djangotest.pythonanywhere.com']
рд╣рдо рдХрд┐рд╕реА рднреА рдЙрдкрд▓рдмреНрдз рддрд░реАрдХреЗ рд╕реЗ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдлрд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВред
рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдПрдХ рдЕрдиреБрднрд╡рд╣реАрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИ, рд╕рдВрдЧреНрд░рд╣ рдХреЛ рд╕рд░реНрд╡рд░ рдкрд░ рдЕрдкрд▓реЛрдб рдХрд░рдирд╛ (рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ-> рдПрдХ рдлрд╝рд╛рдЗрд▓ рдЕрдиреБрднрд╛рдЧ рдЕрдкрд▓реЛрдб рдХрд░реЗрдВ) рдФрд░ рд╕рд░реНрд╡рд░ рдкрд░ рдЗрд╕реЗ рдмреИрд╢ рд╢реЗрд▓ (рдХрдВрд╕реЛрд▓> рдмрд╢ рдЦрдВрдб) рдореЗрдВ рдПрдХ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдЕрдирдЬрд╝рд┐рдк рдХрд░реЗрдВ:
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рд╣рдордиреЗ mysite.tar.gz рдлрд╝рд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рдХреА рд╣реИ, рддреЛ рд╣рдо рдЗрд╕реЗ PythonAnywhere рдХрдВрд╕реЛрд▓ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ
tar -zxvf mysite.tar.gz
рдЕрдм рд╕рд░реНрд╡рд░ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ, рдкрд╛рдпрдердирдСрди-рд╡реЗ рдХрдВрд╕реЛрд▓ рдореЗрдВ рджрд░реНрдЬ рдХрд░реЗрдВ:
virtualenv env source env/bin/activate pip install django django-disqus
рд╣рдо рдЕрдиреБрднрд╛рдЧ рд╡реЗрдм рдореЗрдВ рд╕реНрдереИрддрд┐рдХ рдкреГрд╖реНрдареЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ -> рд╕реНрдЯреЗрдЯрд┐рдХ рдлрд╝рд╛рдЗрд▓реЗрдВ:

рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ - рд╡рд╣ рд╕реНрдерд╛рди рдЬрд╣рд╛рдБ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдирд┐рд╣рд┐рдд рд╣реИ, рджреВрд╕рд░реЗ рдореЗрдВ - Django рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреИрдирд▓ рдХреА рд╕реНрдерд┐рд░ рдлрд╛рдЗрд▓реЗрдВред
WSGI рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ (рд╡реЗрдм тАЛтАЛ-> рдпрд╣ рдПрдХ WSGI рдлрд╝рд╛рдЗрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: ...):
activate_this = '/home/djangotest/env/bin/activate_this.py' execfile(activate_this, dict(__file__=activate_this)) import os import sys path = '/home/djangotest/mysite' if path not in sys.path: sys.path.append(path) os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings' import django.core.handlers.wsgi application = django.core.handlers.wsgi.WSGIHandler()
рд╡реЗрдм рдмрдЯрди рджрдмрд╛рдПрдВ -> рдкреБрдирдГ рд▓реЛрдб рдХрд░реЗрдВ djangotest.pythonanywhere.com
рд╣рдо djangotest.pythonanywere.com/blog/ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ - рдмрдзрд╛рдИ рд╣реЛ, рдпрд╣ рдЖрд╕рд╛рди рдирд╣реАрдВ рдерд╛, рд▓реЗрдХрд┐рди рдЖрдкрдиреЗ рдЗрд╕реЗ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ред рдЕрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдЖрд░рд╛рдорджрд╛рдпрдХ рдмреНрд▓реЙрдЧ рд╣реИ, рдЬреЛ рдХрд┐ рд╕рдмрд╕реЗ рдЖрдзреБрдирд┐рдХ рд╡реЗрдм рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпреЛрдВ рдкрд░ рд╕реНрд╡рдпрдВ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ!