Django рдкрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рд▓ рдмреНрд▓реЙрдЧ: рд╕рдмрд╕реЗ рдЫреЛрдЯреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╛рд╕ рдФрд░ рддреИрдирд╛рддреА

рдпрд╣ рдЖрд▓реЗрдЦ рд╡реЗрдм-рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрднрд┐рдкреНрд░реЗрдд рд╣реИ рдФрд░ рдЯреНрд╡рд┐рдЯрд░ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ 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) рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝реЗрдВ:

 # coding: utf-8 import os BASE_DIR = os.path.dirname(os.path.dirname(__file__)) 


рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ, рд╣рдо рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рднреНрд░рдо рдФрд░ рдЧреНрд▓рд┐рдЪ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЗрд╕реЗ рд╕рднреА рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрдиреАрдп * .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() #    admin.py    urlpatterns = patterns('', url(r'^admin/', include(admin.site.urls)), #URL  http://_/admin/ ) 


рдмреНрд▓реЙрдЧ / model.py рдореЗрдВ рдПрдХ рдореЙрдбрд▓ рдмрдирд╛рдПрдБ

 from django.db import models class Post(models.Model): title = models.CharField(max_length=255) #   datetime = models.DateTimeField(u' ') #   content = models.TextField(max_length=10000) #   def __unicode__(self): return self.title def get_absolute_url(self): return "/blog/%i/" % self.id 


рдЗрд╕ рдореЙрдбрд▓ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, Django рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЯреЗрдмрд▓ рдмрдирд╛рдПрдЧрд╛ред

рд╣рдо рдЗрд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдмреНрд▓реЙрдЧ / admin.py рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд░рддреЗ рд╣реИрдВ

 from django.contrib import admin from blog.models import Post #    blog/models.py admin.site.register(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): #     model = Post #    class PostDetailView(DetailView): #    model = Post 


Urlpatterns mysite / urls.py рдореЗрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЬреЛрдбрд╝реЗрдВ
 url(r'^blog/', include('blog.urls')), 


рдмреНрд▓реЙрдЧ рдореЙрдбреНрдпреВрд▓ рд╕реЗ urls.py рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ / рдмреНрд▓реЙрдЧ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА URL рдХреЗ рд▓рд┐рдП, рдФрд░ рдирд┐рдореНрди рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдмреНрд▓реЙрдЧ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ urls.py рдлрд╝рд╛рдЗрд▓ рд╕реНрд╡рдпрдВ рдмрдирд╛рдПрдВ:

 #coding: utf-8 from django.conf.urls import patterns, url from blog.views import PostsListView, PostDetailView urlpatterns = patterns('', url(r'^$', PostsListView.as_view(), name='list'), #    URL http://_/blog/ #     url(r'^(?P<pk>\d+)/$', PostDetailView.as_view()), #   URL http://_/blog// #       ) 


рдЕрдм рдЖрдкрдХреЛ рдкреЗрдЬ рдЯреЗрдореНрдкрд▓реЗрдЯ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, 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; /* 60px to make the container go all the way to the bottom of the topbar */ } </style> <link href="{{STATIC_URL}}bootstrap/css/bootstrap-responsive.css" rel="stylesheet"> <!--[if lt IE 9]> <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> <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> <!-- container --> </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/ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ - рдмрдзрд╛рдИ рд╣реЛ, рдпрд╣ рдЖрд╕рд╛рди рдирд╣реАрдВ рдерд╛, рд▓реЗрдХрд┐рди рдЖрдкрдиреЗ рдЗрд╕реЗ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ред рдЕрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдЖрд░рд╛рдорджрд╛рдпрдХ рдмреНрд▓реЙрдЧ рд╣реИ, рдЬреЛ рдХрд┐ рд╕рдмрд╕реЗ рдЖрдзреБрдирд┐рдХ рд╡реЗрдм рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпреЛрдВ рдкрд░ рд╕реНрд╡рдпрдВ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ!

Source: https://habr.com/ru/post/In181556/


All Articles