سایت شخصی ایمان سلمانی

حاج محمد ابراهیم همت

سلام من (ایمان سلمانی) این سایت رو ایجاد کردم تا بتونم اندک کمکی به هم وطنان عزیزم بکنم. بهشون قدرت لینوکس رو نشون بدم. آموزش هایی رو براشون بذارم و با برخی نرم افزار ها آشنا شون کنم و پروژه های خودم رو معرفی کنم. اگر هم توانستم کمک شما را داشته باشم ( هر کمکی ) یا بتوانم پاسخ سوال یا مشکلی که برایتان پیش آمده را با اطلاعات نا چیزم حل کنم باعث افتخار من می شود.

جنگو در یک نگاه

جنگو در یک محیط خبری طراحی شده است تا وظایف توسعهٔ وب را سریع و آسان انجام دهد. هدف این سند آشنایی اجمالی شما با جنگو و شیوه‌ٔ کار آن است. هر گاه احساس کردید برای شروع پروژه آماده هستید می‌توانید به سند بعد بروید.

مدل خود را طراحی کنید

جنگو بدون پایگاه داده قابل استفاده است و برای استفاده از آن هم کافیست طرح پایگاه دادهٔ خود را با کد های پایتون توصیف کنید.

برای نمونه:

from django.db import models

class Reporter(models.Model):
    full_name = models.CharField(max_length=70)

    def __str__(self):              # __unicode__ on Python 2
        return self.full_name

class Article(models.Model):
    pub_date = models.DateField()
    headline = models.CharField(max_length=200)
    content = models.TextField()
    reporter = models.ForeignKey(Reporter, on_delete=models.CASCADE)

    def __str__(self):              # __unicode__ on Python 2
        return self.headline

نصب

بعد، دستور العمل خط فرمان جنگو را اجرا کنید تا بطور خورکار جداول پایگاه داده ایجاد شوند.

$ python manage.py migrate

فرمان migrate به تمام مدل های موجود شما نگاه می کند و جداول را در پایگاه داده های شما ایجاد می کند تا جدولی از قبل وجود نداشته باشد همچین اگر دوست داشته باشید می‌توانید کنترل خلی گسترده ای روی آن داشته باشید.

از API رایگان لذت ببرید

در این روش، شما یک API رایگان و پویا برای دسترسی به اطلاعات خود دارید. در اینجا چند نمونه آورده شده است:

# Import the models we created from our "news" app
>>> from news.models import Reporter, Article

# No reporters are in the system yet.
>>> Reporter.objects.all()
<QuerySet []>

# Create a new Reporter.
>>> r = Reporter(full_name='John Smith')

# Save the object into the database. You have to call save() explicitly.
>>> r.save()

# Now it has an ID.
>>> r.id
1

# Now the new reporter is in the database.
>>> Reporter.objects.all()
<QuerySet [<Reporter: John Smith>]>

# Fields are represented as attributes on the Python object.
>>> r.full_name
'John Smith'

# Django provides a rich database lookup API.
>>> Reporter.objects.get(id=1)
<Reporter: John Smith>
>>> Reporter.objects.get(full_name__startswith='John')
<Reporter: John Smith>
>>> Reporter.objects.get(full_name__contains='mith')
<Reporter: John Smith>
>>> Reporter.objects.get(id=2)
Traceback (most recent call last):
    ...
DoesNotExist: Reporter matching query does not exist.

# Create an article.
>>> from datetime import date
>>> a = Article(pub_date=date.today(), headline='Django is cool',
...     content='Yeah.', reporter=r)
>>> a.save()

# Now the article is in the database.
>>> Article.objects.all()
<QuerySet [<Article: Django is cool>]>

# Article objects get API access to related Reporter objects.
>>> r = a.reporter
>>> r.full_name
'John Smith'

# And vice versa: Reporter objects get API access to Article objects.
>>> r.article_set.all()
<QuerySet [<Article: Django is cool>]>

# The API follows relationships as far as you need, performing efficient
# JOINs for you behind the scenes.
# This finds all articles by a reporter whose name starts with "John".
>>> Article.objects.filter(reporter__full_name__startswith='John')
<QuerySet [<Article: Django is cool>]>

# Change an object by altering its attributes and calling save().
>>> r.full_name = 'Billy Goat'
>>> r.save()

# Delete an object with delete().
>>> r.delete()

رابط کاربری پویا

هنگامی که مدل های شما آماده شده باشند، Django به طور خودکار یک رابط حرفه‌ای اداری را ایجاد می کند - یک وب سایت که به کاربران امکان تأیید، اضافه، تغییر و حذف اشیا را می دهد. استفادهٔ از سایت مدیریت:

mysite/news/models.py

from django.db import models

class Article(models.Model):
    pub_date = models.DateField()
    headline = models.CharField(max_length=200)
    content = models.TextField()
    reporter = models.ForeignKey(Reporter, on_delete=models.CASCADE)

mysite/news/admin.py

from django.contrib import admin

from . import models

admin.site.register(models.Article)

فلسفه در اینجا این است که سایت شما توسط یک کارمند یا یک مشتری یا شاید فقط شما ویرایش می شود و نمی خواهید فقط برای مدیریت محتوا از آن استفاده کنید.

یک کار معمولی در ایجاد برنامه های جنگو، ایجاد مدل ها و ساخت سایت مدیریت در ابتدا است که در سریع ترین زمان ممکن انجام می شود، بنابراین کارکنان (یا مشتریان) می توانند از ابتدای کار داده های خود را ثبت کنند. در آخر، داده‌ها را به عموم عرضه کنند.

URL های خود را طراحی کنید

یک طرح URL تمیز و زیبا یک جزء مهم در یک برنامه وب با کیفیت بالا است. جنگو دنبال طراحی زیبا URL است و هیچ نشانی از URL ها، مانند .php یا .asp را نمی گزارد.

برای طراحی URL های یک برنامه، یک ماژول پایتون به نام URLconf ایجاد می کنید. جدول محتویات برای برنامه شما، شامل یک نقشه ساده بین الگوهای URL و فراخوانی توابع پایتون است. از URLconf برای جدا کردن URL ها از کد پایتون استفاده می کنند.

در اینجا مثالی از URLconf برای Reporter / Article آورد شده است:

mysite/news/urls.py

from django.conf.urls import url

from . import views

urlpatterns = [
    url(r'^articles/([0-9]{4})/$', views.year_archive),
    url(r'^articles/([0-9]{4})/([0-9]{2})/$', views.month_archive),
    url(r'^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$', views.article_detail),
]

کد بالا آدرس URL ها را به صورت عبارات منظم ساده به مکان توابع پایتون ("view ها") می دهد. عبارات منظم از پرانتز استفاده می کنند تا "مقادیر" را از URL ها بگیرند. هنگامی که یک کاربر یک صفحه را درخواست می کند، جنگو از طریق هر الگو به ترتیب اجرا می شود و با اولین URL که مطابقت داشته باشد، متوقف می شود. (اگر هیچ یک از آنها مطابقت نداشته باشد، جنگو یک نمایش 404 خاصی را می خواند.) این بسیار سریع است زیرا عبارات منظم در زمان بارگیری کامپایل شده اند.

هنگامی که یکی از url ها مطابقت دارد، جانگو view داده شده را فراخوانی می کند، که یک تابع پایتون است. به هر view می تواند یک شی request و مقادیر ثبت شده در regex منتقل شود.

برای مثال، اگر یک کاربر درخواست "/articles / 2005/05/39323/" را داشته باشد، جنگو می خواهد function news.views.article_detail (درخواست '2005'، '05'، '39323') را فراخوانی کند.

View های خود را بنویسید

هر view مسئول انجام یکی از این دو مورد است: ارسال یک شی HttpResponse حاوی محتوا برای صفحه درخواست شده یا استثنا مانند Http404. بقیه اش به خودت مربوطه

به طور کلی، یک نمایه(view) داده ها را بر اساس پارامترها بارگیری می کند، یک قالب را بارگذاری می کند و داده‌های آن را با داده‌های بازیابی شده تغییر می دهد. در اینجا یک مثال برای year_archive است:

mysite/news/views.py

from django.shortcuts import render

from .models import Article

def year_archive(request, year):
    a_list = Article.objects.filter(pub_date__year=year)
    context = {'year': year, 'article_list': a_list}
    return render(request, 'news/year_archive.html', context)

این مثال از سیستم قالب جنگو استفاده می کند که دارای چندین ویژگی قدرتمند است اما تلاش می کند برای استفاده غیر برنامه نویسان به اندازه کافی ساده باشد.

قالب‌های خود را طراحی کنید

کد پایین بارگذاری الگو news / year_archive.html است.

جانگو دارای یک مسیر جستجوی الگو است، که به شما اجازه می دهد تا کار اضافی را در میان قالب ها به حداقل برسانید. در تنظیمات Django شما لیستی از دایرکتوری ها را برای بررسی قالب ها با DIRS مشخص می کنید. اگر یک قالب در دایرکتوری اول موجود نباشد، دوم را چک می کند و غیره.

قالب news / year_archive.html یافت شد. در اینجا چیزی است که ممکن است شبیه این باشد:

mysite/news/templates/news/year_archive.html

{% extends "base.html" %}

{% block title %}Articles for {{ year }}{% endblock %}

{% block content %}
<h1>Articles for {{ year }}</h1>

{% for article in article_list %}
    <p>{{ article.headline }}</p>
    <p>By {{ article.reporter.full_name }}</p>
    <p>Published {{ article.pub_date|date:"F j, Y" }}</p>
{% endfor %}
{% endblock %}

متغیرها توسط {{}} احاطه شده اند.

توجه داشته باشید {{article.pub_date | date: "F j، Y"}} از "حالت یونیکس" ("کاراکتر") استفاده می کند. یک فیلتر قالب و راهی برای فیلتر کردن یک متغیر است. در این حالت، فیلتر تاریخی یک شیء تاریخ زمانبندی پایتون را در فرمت داده شده (همانطور که در تابع تاریخ پی اچ پی یافت می شود) را تشکیل می دهد.

شما می توانید فیلتر قالب سفارشی بنویسید. شما می توانید داخل تگ ها کد های پایتون بنویسید.

در نهایت، جنگو از مفهوم "template inheritance" استفاده می کند. این کاری است که {٪ extends "base.html"٪} انجام می دهد. بدین معنی است که "ابتدا قالب را به نام" base "بارگذاری کنید، که یک دسته از بلوک ها را تعریف کرده است و بلوک ها را با بلوک های زیر پر می کند." خلاصه، به شما این امکان را می دهد که به طور چشمگیری قالب ها را کاهش دهید.

در اینجا base.html از فایل‌های static استفاده کرده است:

mysite/templates/base.html

{% load static %}
<html>
<head>
    <title>{% block title %}{% endblock %}</title>
</head>
<body>
    <img src="{% static "images/sitelogo.png" %}" alt="Logo" />
    {% block content %}{% endblock %}
</body>
</html>)

در این روش طرح پایه سایت تعریف می شود و نقاطی برای قالب‌های زیر شاخه گذاشته می‌شود. این کار ایجاد تغییرات در قالب را بسیار آسان می کند. زیرا تنها کافیست قالب پایه را تغییر دهیم. این روش به شما اجازه می‌دهد تا چندین نسخه از سایت را با قالب‌های پایهٔ مختلف ایجاد کنید در حالی که نیاز به تغییر قالب‌های زیر شاخه نیست. سازندگان جنگو از این تکنیک برای موبایل های متفاوت استفاده کرده اند. (با ایجاد قالب پایه چدید)

توجه داشته باشید که اگر یکی از سیستم های دیگر را ترجیح می دهید، مجبور نیستید از سیستم قالب جنگو استفاده کنید. در حالی که سیستم قالب Dynango به خوبی با لایه مدل Django ادغام شده است، هیچ چیز شما را مجبور به استفاده از آن نمی کند.

برای این موضوع، شما مجبور نیستید که از API بانک اطلاعاتی Django استفاده کنید. شما می‌توانید از یکی دیگر از لایه های انتزاعی پایگاه داده استفاده کنید، شما می توانید فایل های XML را بخوانید، می توانید فایل ها را از روی دیسک یا هر چیزی که می خواهید بخوانید. هر قطعه ای از جنگو - مدل ها، نمایش ها، قالب ها - از آن یکی جدا می شود.


این تنها یک مرور سریع از عملکرد جنگو بود.

برخی از ویژگی های مفید تر:
یک چارچوب ذخیره سازی که با memcached یا سایر backends ها ادغام می شود.
چارچوب سندیکائی که باعث ایجاد RSS و Atom می شود، آسان ساختن یک کلاس کوچک پایتون است.
مرحلهٔ بعدی نصب جنگو است از توجه شما سپاسگذارم!

دانلود زیرنویس سایت ۰۳ اسفند ۹۹ ، ۰۸:۵۰
I loved as much as you will receive carried out right
here. The sketch is tasteful, your authored subject matter stylish.
nonetheless, you command get bought an shakiness over that you
wish be delivering the following. unwell unquestionably come further formerly again as exactly the same nearly very often inside case you shield
this hike.
ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی