рдЕрдЬрдЧрд░ рдФрд░ django рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреНрд░рдорд┐рдд рдиреЛрдЯ

рдЕрдЬрдЧрд░ рдФрд░ django рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдЫреЛрдЯреЗ рдиреЛрдЯ / рдЯрд┐рдкреНрд╕ рдЬрдорд╛ рд╣реЛ рдЧрдП рд╣реИрдВ рдЬреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд┐рд╖рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдЦреАрдВрдЪреЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ рд╕рдм рдХреБрдЫ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддрд╛ рд╣реВрдВред



рдХрдЯреМрддреА рдХреЗ рддрд╣рдд:







Django: рджреГрд╢реНрдп рдХреЛрдб рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдирд╛



Django рдкреНрд░рд▓реЗрдЦрди рдФрд░ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдЖрдорддреМрд░ рдкрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╡рд┐рдЪрд╛рд░ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:



def contact(request): if request.method == 'POST': form = ContactForm(request.POST) if form.is_valid(): #  . ,  form.save() # ... return HttpResponseRedirect('/thanks/') #  POST-   else: form = ContactForm() return render_to_response('contact.html', { 'form': form, }, context_instance=RequestContext(request))
      
      







рдпрд╣ рд╢рд╛рдпрдж рд╕рд╣реА рд╣реИ - рдпрд╣ рд╕рдордЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдмреЗрд╣рддрд░ рд╕рдордЭрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рдореЗрдВ, рдпрд╣ рдХреЛрдб рдареАрдХ 2 рдЧреБрдирд╛ рдЫреЛрдЯрд╛ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ:



 def contact(request): form = ContactForm(request.POST or None) if form.is_valid(): #  . ,  form.save() # ... return redirect('url_name', param1=value) return direct_to_template(request, 'contact.html', {'form': form})
      
      







рдЪрд┐рдкреНрд╕:





Django: рдбреНрд░рд╛рдЗрдВрдЧ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕



рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреИрдирд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрдЦ рдореЗрдВ, рдЙрдиреНрд╣реЛрдВрдиреЗ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдХрд╛ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рд╕рднреА рд╕рдорд╛рди, рдЙрд╕рдХреЗ рд╣рд╛рде рдирд╣реАрдВ рдкрд╣реБрдВрдЪреЗ, рдпрд╣ рднреА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред рд╣рд╛рдВ, рдФрд░ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЦрд╛рд╕ рдирд╣реАрдВ рд╣реИ, рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рд╕рд░рд▓ рдФрд░ "рдмреЗрд╡рдХреВрдл" рд╣реИ - рд░реЗрдЦрд╛рдВрдХрди Google рдЪрд╛рд░реНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рд╣реИрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдк рдмрд┐рдирд╛ рдХрд┐рд╕реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рд╣рдо рдпрд╣рд╛рдВ рд╕реНрд╡рд╛рдж рдХреЗ рд▓рд┐рдП рдПрдХ рдЧреНрд░рд╛рдл рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ (рдпрд╣ Google рдХрд╛ рдПрдХ рдЕрд░реНрдз-рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЯреВрд▓ рд╣реИ, рдПрдкреАрдЖрдИ рдЧреВрдЧрд▓ рдЪрд╛рд░реНрдЯ рдкрд░ рдорджрдж рд╕реЗ рдПрдХ рд▓рд┐рдВрдХ рд╣реИ), рдФрд░ рдлрд┐рд░ рд╣рдо рдкрд░рд┐рдгрд╛рдореА рд▓рд╛рдЗрди рдХреЛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдкреЗрд╕реНрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдорд╛рдиреЛрдВ рдХреЗ рдмрдЬрд╛рдп рдЪрд░ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВред



Google рдЪрд╛рд░реНрдЯ рдкрд░ рдмрд╣реБрдд рдкрддрд▓рд╛ рдЖрд╡рд░рдг рд╣реИ: django-chart-tools ред рд╕рд╛рд░ рдПрдХ рд╣реА рд╣реИ: рдЧреНрд░рд╛рдл рдХреЛ рдиреЗрддреНрд░рд╣реАрди рд░реВрдк рд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдФрд░ рдЪрд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ django- рдЪрд╛рд░реНрдЯ-рдЯреВрд▓ рдХреЗ рд╕рд╛рде рдРрд╕реЗ рдЧреНрд░рд╛рдлрд╝ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИрдВред



рдбреЗрдЯрд╛ рд╕реИрдВрдкрд▓рд┐рдВрдЧ рдХреЗрд╡рд▓ django ORM рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛, рд╕реБрд╡рд┐рдзрд╛ / рдЧрддрд┐ рдХреЗ рд▓рд┐рдП, django-qststats- рдЬрд╛рджреВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдХрд╛рд░реНрдп рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред



рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк (django- рдЪрд╛рд░реНрдЯ-рдЯреВрд▓реНрд╕ рдФрд░ django-qsstats-Magic рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ), рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рджреИрдирд┐рдХ рдЧреНрд░рд╛рдлрд╝ рдХреЛ рдЗрд╕ рддрд░рд╣ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:



 #   qs = User.objects.filter(is_active=True) end = datetime.today() start = end-timedelta(days=30) #     data = QuerySetStats(qs, 'date_joined').time_series(start, end) values = [t[1] for t in data] captions = [t[0].day for t in data]
      
      







рдлрд┐рд░ рд╣рдо рд╡реИрд░рд┐рдПрдмрд▓ рд╡реИрд▓реНрдпреВ рдФрд░ рдХреИрдкреНрд╢рди рдХреЛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдореЗрдВ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╡рд╣рд╛рдВ рд╣рдо рдЧреНрд░рд╛рдл рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:



 {% load chart_tags %} {% bar_chart values captions ┬л580x100┬╗ %}
      
      







Google рдЪрд╛рд░реНрдЯ рдЫрд╡рд┐ рдПрдкрд┐ рдХреЛ рд╣рд┐рдЯ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рдХреЛрдИ рдкреНрд░рддрд┐рдмрдВрдз рдирд╣реАрдВ рд╣реИ , рд╡рд╣рд╛рдВ рд╡реЗ рдХреЗрд╡рд▓ рдЙрдирд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддреЗ рд╣реИрдВ рдЕрдЧрд░> рдкреНрд░рддрд┐ рджрд┐рди 200 рд╣рдЬрд╛рд░ рд╣рд┐рдЯ рдЙрдирдХреЗ рд▓рд┐рдП рд▓реЛрдб рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрдВрдЧреЗред рдЗрд╕рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХреЗ рдЧреНрд░рд╛рдл рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рди рдХреЗрд╡рд▓ рдПрдбрдорд┐рди рдкреИрдирд▓ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред



Django: рдкрд░реАрдХреНрд╖рдг



рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП django-webtest рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрд╛ рдерд╛ , рд▓реЗрдХрд┐рди рддрдм рд╕реЗ рдПрдХ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдЖ рд╣реИ: django-webtest рдЕрдм рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ (рдорд╛рдирдХ dzhangovsky рдЯреЗрд╕реНрдЯ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреА рддрд░рд╣)ред рдЧреНрд░реЗрдЧреЛрд░ рдореНрдпреВрдЧрд▓рд░ рдХреЛ рдзрдиреНрдпрд╡рд╛рджред рдЕрдм рдЖрдк рдЗрд╕ рд╢реИрд▓реА рдореЗрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:



  # ... response = page.forms['my-form-id'].submit().follow() assert response.context['user'] == self.user
      
      







рдорд╛рдирдХ assertTemplateUsed рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред



django-webtest рдХрд┐рд╕реА рднреА рдЯрд╡реАрд▓ рдПрдХреАрдХрд░рдг рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдФрд░ рдкреВрд░реНрдг рдпреВрдирд┐рдХреЛрдб рд╕рдорд░реНрдерди рдХреЗ рд╕рдВрджрд░реНрдн рддрдХ рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЯрд╡реАрд▓ рд╡рд┐рдХрд╕рд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред



django-webtest рдорд╛рдирдХ рдкрд░реАрдХреНрд╖рдг рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдПрдкреАрдЖрдИ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ (рдПрдХ рдорд╛рдирдХ рдкрд░реАрдХреНрд╖рдг рдЧреНрд░рд╛рд╣рдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдХреЗ рд╕рд╛рде рдПрдХ рдлреЙрд░реНрдо рд╕рдмрдорд┐рдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ)ред рдорд╛рдирдХ рдЯреЗрд╕реНрдЯ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реАрдПрд╕рдЖрд░рдПрдл рдЯреЛрдХрди (рдпрд╛ рдмрд╣реБрдд рдХрд╛рд▓рд╛ рд▓реВрдк) рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рднреА рдЕрд╕рдВрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди django-webtest рдХреЗ рд╕рд╛рде рдпрд╣ рддреБрдЪреНрдЫ (рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ) рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред Django-webtest рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ)



рдпрд╣рд╛рдВ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдкреЙрдк-рдЕрдк рдкреНрд▓реЗрдЯ рдХреА рд░рдЪрдирд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛: django-webtest рдореЗрдВ рд╣рд░ рдЬрдЧрд╣ рд╣рд░реЗ рд░рдВрдЧ рдХреЗ рдЪреЗрдХрдорд╛рд░реНрдХ рд╣реЛрдВрдЧреЗ, рдФрд░ рдЯреНрд╡рд┐рд▓ рдФрд░ рдорд╛рдирдХ рдкрд░реАрдХреНрд╖рдг рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдкрд╛рд╕ рдпрд╣рд╛рдВ рдФрд░ рд╡рд╣рд╛рдВ рд▓рд╛рд▓ рд░рдВрдЧ рд╣реЛрдВрдЧреЗред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЗрдпрд╛рди рдмреЗрдХрд┐рдВрдЧ рд╕реЛрдЪрддрд╛ рд╣реИ рдХрд┐ django-webtest "рдХреВрд▓!"



Django: Vkontakte рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╡реЗрджрди рдкрддреНрд░ рд▓рд┐рдЦрдирд╛



рдпрд╣ рд╕рд┐рд░реНрдл рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред рдирд┐рдпрдорд┐рдд рд╕рд╛рдЗрдЯреЛрдВ рд╕реЗ рдЕрдВрддрд░ рдХреЗрд╡рд▓ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрдВрдЬреАрдХреГрдд рдФрд░ рд▓реЙрдЧрд┐рди рд╣реЛрддреЗ рд╣реИрдВред Django- рдкрдВрдЬреАрдХрд░рдг рдХреЗ рдмрдЬрд╛рдп, django-vkontakte-iframe рд╕реЗрдЯ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВред рдпрд╣ рд╣реИ, рдЕрдм рд╕рднреА рдЖрдЧрдВрддреБрдХ рдкрдВрдЬреАрдХреГрдд рдФрд░ рдЕрдзрд┐рдХреГрдд django рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реИрдВ, рдЕрдиреНрдпрдерд╛ рдЖрдк рдПрдХ рдирд┐рдпрдорд┐рдд рд╕рд╛рдЗрдЯ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЬрдм рддрдХ iframe рдХреЛ рдкреЗрдЬ рдЖрдХрд╛рд░ рдореЗрдВ рдлрд┐рдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП js рдХреА рджреЗрдЦрднрд╛рд▓ рди рдХреА рдЬрд╛рдПред



рдкрд╛рдпрдерди / Django: рд░реВрд╕реА рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛



рдХреМрди рдирд╣реАрдВ рдЬрд╛рдирддрд╛, рд░реВрд╕реА рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП pymorphy рдПрдХ рдЕрдЬрдЧрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИред рд░реВрдкрд╛рддреНрдордХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдФрд░ рдПрдХ рддреЛрдк рд╕реЗ рдПрдХ рдЧреМрд░реИрдпрд╛ рдХреЛ рдЧреЛрд▓реА рдорд╛рд░рдирд╛: рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдзрд╛рд░ рд╕реЗ рд╢рдмреНрджреЛрдВ (рдпрд╛ рд╕рд░рд▓ рд╡рд╛рдХреНрдпрд╛рдВрд╢реЛрдВ) рдХреЛ рд╕реАрдзреЗ django рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдЗрдирд▓рд╛рдЗрди рдХрд░рдирд╛ рдпрд╛ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЙрдиреНрд╣реЗрдВ рд╕рд╣реА рд░реВрдк рдореЗрдВ рд░рдЦрдирд╛ - рдмрд┐рдирд╛ рдХреНрд░рдо рдХреЗ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕реНрдкрд╖реНрдЯ рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ рдХреЗред



peekorphy рдПрдХ geek рдкрддреНрд░рд┐рдХрд╛ рдкрд░ рдПрдХ рд▓реЗрдЦ рд╕реЗ рдмрдврд╝реА рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ, рдкрд╣рд▓реА рдмрд╛рд░ рдореЗрдВ рдХреЛрдб рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдЬрдЧрд░ рдФрд░ nlp (рдкреНрд░рд╛рдХреГрддрд┐рдХ рднрд╛рд╖рд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг) рджреЛрдиреЛрдВ рдХреЗ рд╕рд╛рде рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рдЕрдиреБрднрд╡ рдерд╛ред рд▓реЗрдХрд┐рди рд░реВрдкрд╛рддреНрдордХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЛ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ - рдФрд░ рдПрдХ рд╡рд░реНрд╖ рдХреЗ рд▓рд┐рдП рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред



рдЗрд╕ рд╕рд╛рд▓ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдЙрдиреНрд╣реЛрдВрдиреЗ рдкреНрдпреЛрдореНрдлреА рдкрд░ рдХрд╛рдо рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдФрд░ рд╡рд╣рд╛рдВ рд╣рд░ рдЪреАрдЬ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдпрд╛ред рдФрд░ рд╡рд╕рдВрдд рдореЗрдВ, рд╕рдВрд╡рд╛рдж 2010 рдХреЗ рд╕рдореНрдореЗрд▓рди рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рд░реВрдкрд╛рддреНрдордХ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрдХрд░реНрддрд╛рдУрдВ рдХреА рдПрдХ "рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛" рд╣реБрдИред рдмрд╣реБрдд рдЧрдВрднреАрд░ рд▓реЛрдЧреЛрдВ рдиреЗ рд╡рд╣рд╛рдВ рднрд╛рдЧ рд▓рд┐рдпрд╛, рдкрд░рд┐рдгрд╛рдо рдкреЗрд╢реЗрд╡рд░ рднрд╛рд╖рд╛рд╡рд┐рджреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЬрд╛рдВрдЪреЗ рдЧрдПред рдореЙрд░реНрдлреЛрд▓реЙрдЬреА рдЯреНрд░реИрдХ рдкрд░ рдкрд╛рдЗрдореЛрд░реНрдлреА рдиреЗ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдХрд┐рдпрд╛ (рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдореИрдВ рдЕрднреА рдПрдХ рд╣рд╛рдЗрдлрд╝рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓рд┐рдЦреЗ рдЧрдП рдпреМрдЧрд┐рдХ рд╢рдмреНрджреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВ)ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, "рдЧрдВрджреЗ рдЧреАрдд" рдХреЗ рд╕рд╛рде рдЯреНрд░реИрдХ рдХреЗ рдПрдХ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЛ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП pymorphy рдПрдХрдорд╛рддреНрд░ рдкреНрд░рддрд┐рднрд╛рдЧреА рдерд╛ред рдпрд╣ рд╕рдм рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреБрдЫ рднреА рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реИ)



рдЕрдЬрдЧрд░: рдкрд┐рдкреА рдкрд░ рдкреИрдХреЗрдЬ рдмрд┐рдЫрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЯреНрд░рд┐рдХреНрд╕



1. long_description рдореЗрдВ setup.py рдореЗрдВ рдЖрдк ReST рдорд╛рд░реНрдХрдЕрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕реЗрдЯрдЕрдк рдереНрд░реЗрдб рдХреЗ рдЖрдЧреЗ README.rst рдлрд╝рд╛рдЗрд▓ рд░рдЦрдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдФрд░ рдлрд┐рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ
 long_description = open('README.rst').read()
      
      



рдЙрд╕рдХреЗ рдмрд╛рдж, рдкреАрдкреАрдкреА рдкрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреЗрдЬ рдХреЛ рддреБрд░рдВрдд рдЗрд╕ рдкрд░ рдорджрдж рдорд┐рд▓реЗрдЧреА - рдпрд╣ рд╕рд░рд▓, рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ, рдФрд░ 90% рдореЗрдВ рдЕрд▓рдЧ рдкреНрд░рд▓реЗрдЦрди рдХреЗ рд╕рд╛рде рдкрд░реЗрд╢рд╛рдиреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ (рдЗрд╕ рддрд░рд╣ рдХреА рдПрдХ рдФрд░ рдЯрд┐рдкреНрдкрдгреА - рдЕрдЧрд░ рдпрд╣ рдЕрднреА рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреИрдХреЗрдЬ рдХреЛ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХреЗ рд╕рд╛рде рдкреНрд░рд▓реЗрдЦрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЖрджрд┐, рддреЛ) рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рд▓рд╛рдпрдХ рд╣реИ - рд╢рд╛рдпрдж рдкреИрдХреЗрдЬ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИ?)ред



2. setup.py рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдХрдо рдЬреНрдЮрд╛рдд рд╣реИрдХ рд╣реИред рдпрджрд┐ рдорд╛рд░реНрдХрдЕрдк рдРрд╕рд╛ рдирд╣реАрдВ рдерд╛ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рд╡рд╣ рдЪрд╛рд╣рддрд╛ рдерд╛, рдпрд╛ рдПрдХ рдЯрд╛рдЗрдкреЛ рдпрд╛ рдХреНрд▓рд╛рд╕рд┐рдлрд╛рдпрд░рд┐рдпрд░ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЗрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рд░рд┐рд▓реАрдЬрд╝ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ: рдЖрдк рдмрд╕ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред ./setup.py register



рдФрд░ рдбреЗрдЯрд╛ ./setup.py register



рдЬрд╛рдПрдЧрд╛ред



рдЕрдЬрдЧрд░: рд╕рдЬреНрдЬрд╛рдХрд╛рд░ рдФрд░ рд╕рд╛рде



рдЕрдЬрдЧрд░ рдореЗрдВ рд╕рдВрдЪрд╛рд▓рдХ рдФрд░ рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рдЕрдХреНрд╕рд░ рдПрдХ рд╣реА рдЪреАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдХреЛрдб рдХреЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЯреБрдХрдбрд╝реЗ рдХреЗ рдкрд╣рд▓реЗ рдпрд╛ рдмрд╛рдж рдореЗрдВ рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреНрд░рд┐рдпрд╛рдПрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдФрд░ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдПрдХ рдРрд╕реА рдЪреАрдЬ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рдбреЗрдХреЛрд░реЗрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдФрд░ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, gist.github.com/573536 ) рджреЛрдиреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред



Django: рд╕рд╛рдЗрдЯ рдкрд░ рднреБрдЧрддрд╛рди рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ



рдЕрдЧрд░ рдХреБрдЫ рднреА, django-robokassa рдФрд░ django-рдЕрд╕рд┐рд╕реНрдЯ-рдЖрд░рдпреВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдЙрддреНрдкрд╛рджрди рдореЗрдВ рд╣рдЬрд╛рд░реЛрдВ рдЦрд░реАрджрд╛рд░реА рдХреА рдЧрдИ, рддреЛ> рд░реВрдмрд▓реНрд╕ред



рдЕрдзрд┐рдХ рд▓рд┐рдЦреЗрдВ, рдХреМрди рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред



рдкрд╛рдпрдерди / Django: рд╕рд╛рдЗрдЯ рдкрд░ Yandex.Map рджрд┐рдЦрд╛ рд░рд╣рд╛ рд╣реИ



рдЬрд┐рдпреЛрдХреЛрдбрд┐рдВрдЧ рдФрд░ рдХреИрд╢рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдЧрдбрд╝рдмрдбрд╝ рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдпрд╛рдВрдбреЗрдХреНрд╕-рдореИрдкреНрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред



рд╡рд╛рд╣, рд╣рдо рдорд╛рди рд▓реЗрдВрдЧреЗ рдХрд┐ рд╕рдм рдХреБрдЫред



All Articles