{"title":"Αναβαθμίζοντας το Django σε μια καινούργια έκδοση","version":"2.2","locale":"el","docname":"howto/upgrade-version","url":"/el/2.2/howto/upgrade-version/","canonical":"https://djangodocs.dev/el/2.2/howto/upgrade-version/","summary":"Παρόλο που μπορεί, μερικές φορές, να είναι περίπλοκη διαδικασία, η αναβάθμιση στην τελευταία έκδοση του Django έχει πολλά οφέλη: Προσθήκη καινούργιων λειτουργίων…","html":"<h1>Αναβαθμίζοντας το Django σε μια καινούργια έκδοση<a class=\"heading-anchor\" href=\"#upgrading-django-to-a-newer-version\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Παρόλο που μπορεί, μερικές φορές, να είναι περίπλοκη διαδικασία, η αναβάθμιση στην τελευταία έκδοση του Django έχει πολλά οφέλη:</p>\n<ul class=\"simple\">\n<li><p>Προσθήκη καινούργιων λειτουργίων και βελτιστοποιήσεων.</p></li>\n<li><p>Επιδιόρθωση σφαλμάτων.</p></li>\n<li><p>Older version of Django will eventually no longer receive security updates.\n(see <a class=\"reference internal\" href=\"/el/2.2/internals/release-process/#supported-versions-policy\"><span class=\"std std-ref\">Supported versions</span></a>).</p></li>\n<li><p>Η αναβάθμιση σε κάθε καινούργια διανομή του Django κάνει τις μελλοντικές αναβαθμίσεις λιγότερο περίπλοκες, διατηρώντας τον κώδικα σας ενημερωμένο.</p></li>\n</ul>\n<p>Παρακάτω επισημαίνουμε ορισμένα σημεία για να σας βοηθήσουμε να κάνετε την κάθε αναβάθμιση όσο γίνεται πιο ομαλά.</p>\n<section id=\"required-reading\">\n<h2>Απαραίτητη ανάγνωση<a class=\"heading-anchor\" href=\"#required-reading\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Αν είναι η πρώτη σας φορά που κάνετε αναβάθμιση, είναι χρήσιμο να διαβάσετε τον <a class=\"reference internal\" href=\"/el/2.2/internals/release-process/\"><span class=\"doc\">οδηγό της διαδικασίας για διαφορετικές εκδόσεις</span></a>.</p>\n<p>Έπειτα, θα πρέπει να εξοικειωθείτε με τις αλλαγές που έγιναν στην καινούργια Django έκδοση ή εκδόσεις:</p>\n<ul class=\"simple\">\n<li><p>Διαβάστε το άρθρο <a class=\"reference internal\" href=\"/el/2.2/releases/\"><span class=\"doc\">σημειώσεις διανομής</span></a> για κάθε “final” διανομή από την αμέσως επόμενη της δικής σας έκδοσης μέχρι αυτή που θέλετε να αναβαθμίσετε.</p></li>\n<li><p>Δείτε στο άρθρο <a class=\"reference internal\" href=\"/el/2.2/internals/deprecation/\"><span class=\"doc\">χρονοδιάγραμμα του deprecation</span></a> για τις σχετικές εκδόσεις, ούτως ώστε να αποφύγετε να χρησιμοποιείτε deprecated λειτουργίες.</p></li>\n</ul>\n<p>Δώστε ιδιαίτερη προσοχή στις μη συμβατές, με παλαιότερες εκδόσεις, αλλαγές, για να πάρετε μια σαφή ιδέα του τι χρειάζεται για μια επιτυχημένη αναβάθμιση.</p>\n<p>If you’re upgrading through more than one feature version (e.g. A.B to A.B+2),\nit’s usually easier to upgrade through each feature release incrementally\n(A.B to A.B+1 to A.B+2) rather than to make all the changes for each feature\nrelease at once. For each feature release, use the latest patch release (A.B.C).</p>\n<p>The same incremental upgrade approach is recommended when upgrading from one\nLTS to the next.</p>\n</section>\n<section id=\"dependencies\">\n<h2>Dependencies<a class=\"heading-anchor\" href=\"#dependencies\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Στις περισσότερες περιπτώσεις θα είναι απαραίτητο να αναβαθμίσετε και τα dependecies (πακέτα-εφαρμογές τρίτων) τα οποία χρησιμοποιείτε με το Django. Αν μια έκδοση Django εκδόθηκε πρόσφατα ή κάποια από τα dependencies σας δεν έχουν την ανάλογη και συχνή αναβάθμιση, τότε ίσως να μην υποστηρίζουν ακόμα την καινούργια έκδοση του Django. Σε αυτές τις περιπτώσεις θα πρέπει να περιμένετε μέχρις ότου εκδοθούν οι νέες εκδόσεις των dependencies σας.</p>\n</section>\n<section id=\"resolving-deprecation-warnings\">\n<h2>Επιλύοντας τα deprecation warnings<a class=\"heading-anchor\" href=\"#resolving-deprecation-warnings\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Πριν την αναβάθμιση, μια καλή ιδέα είναι να επιλύσετε τυχόν deprecation warnings τα οποία γίνονται raised από το project σας, με την τρέχουσα έκδοση του Django. Επιδιορθώνοντας αυτά τα warnings, πριν την αναβάθμιση, εγγυάται ότι είστε ενημερωμένοι για τις περιοχές του κώδικα που θέλουν αλλαγή.</p>\n<p>In Python, deprecation warnings are silenced by default. You must turn them on\nusing the <code class=\"docutils literal notranslate\"><span class=\"pre\">-Wa</span></code> Python command line option or the <span class=\"target\" id=\"index-0\"></span><a class=\"reference external\" href=\"https://docs.python.org/3/using/cmdline.html#envvar-PYTHONWARNINGS\" title=\"(στη Python έκδοση 3.14)\"><code class=\"xref std std-envvar docutils literal notranslate\"><span class=\"pre\">PYTHONWARNINGS</span></code></a>\nenvironment variable. For example, to show warnings while running tests:</p>\n<div class=\"console\" data-console><div class=\"console-panel\" data-platform=\"unix\"><p class=\"console-label\" id=\"console-0-unix-label\">Linux / macOS</p><div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"gp\">$ </span>python<span class=\"w\"> </span>-Wa<span class=\"w\"> </span>manage.py<span class=\"w\"> </span><span class=\"nb\">test</span>\n</code></pre></div>\n</div><div class=\"console-panel\" data-platform=\"windows\"><p class=\"console-label\" id=\"console-0-windows-label\">Windows</p><div class=\"code-block\" data-language=\"doscon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Windows</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Windows shell\"><code><span class=\"gp\">...\\&gt;</span> py -Wa manage.py test\n</code></pre></div></div></div>\n<p>Αν δεν χρησιμοποιείτε τον Django test runner, θα χρειαστεί, επίσης, να σιγουρευτείτε ότι κάθε έξοδος της κονσόλας δεν γίνεται captured, κάτι το οποίο θα έκρυβε τα deprecation warnings. Για παράδειγμα, αν χρησιμοποιείτε το py.test:</p>\n<div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"gp\">$ </span><span class=\"nv\">PYTHONWARNINGS</span><span class=\"o\">=</span>always<span class=\"w\"> </span>py.test<span class=\"w\"> </span>tests<span class=\"w\"> </span>--capture<span class=\"o\">=</span>no\n</code></pre></div>\n<p>Επιλύστε κάθε deprecation warning με την τρέχουσα έκδοση του Django που χρησιμοποιείτε και μετά προχωρήστε στην διαδικασία της αναβάθμισης.</p>\n<p>Οι εφαρμογές τρίτων ίσως χρησιμοποιούν deprecated APIs προκειμένου να υποστηρίξουν πολλές εκδόσεις του Django, οπότε τα deprecation warnings στα πακέτα που έχετε εγκαταστήσει, ίσως να μην αποτελούν πρόβλημα. Αν ένα πακέτο-εφαρμογή δεν υποστηρίζει την τελευταία έκδοση του Django, σκεφτείτε μήπως κάνετε raise κάποιο issue ή να στείλετε ένα pull request για αυτό.</p>\n</section>\n<section id=\"installation\">\n<h2>Εγκατάσταση<a class=\"heading-anchor\" href=\"#installation\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Όταν είστε έτοιμοι, <a class=\"reference internal\" href=\"/el/2.2/topics/install/\"><span class=\"doc\">εγκαταστήστε τη νέα έκδοση του Django</span></a>. Αν χρησιμοποιείτε <a class=\"reference external\" href=\"https://virtualenv.pypa.io/\">virtualenv</a> και αυτή αποτελεί κάποια σημαντική αναβάθμιση, ίσως να θέλετε, πρώτα, να δημιουργήσετε ένα καινούργιο περιβάλλον με όλα τα dependencies.</p>\n<p>If you installed Django with <a class=\"reference external\" href=\"https://pip.pypa.io/\">pip</a>, you can use the <code class=\"docutils literal notranslate\"><span class=\"pre\">--upgrade</span></code> or <code class=\"docutils literal notranslate\"><span class=\"pre\">-U</span></code> flag:</p>\n<div class=\"console\" data-console><div class=\"console-panel\" data-platform=\"unix\"><p class=\"console-label\" id=\"console-1-unix-label\">Linux / macOS</p><div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"gp\">$ </span>pip<span class=\"w\"> </span>install<span class=\"w\"> </span>-U<span class=\"w\"> </span>Django\n</code></pre></div>\n</div><div class=\"console-panel\" data-platform=\"windows\"><p class=\"console-label\" id=\"console-1-windows-label\">Windows</p><div class=\"code-block\" data-language=\"doscon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Windows</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Windows shell\"><code><span class=\"gp\">...\\&gt;</span> pip install -U Django\n</code></pre></div></div></div>\n</section>\n<section id=\"testing\">\n<h2>Τεστ<a class=\"heading-anchor\" href=\"#testing\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Όταν το νέο περιβάλλον είναι έτοιμο, <a class=\"reference internal\" href=\"/el/2.2/topics/testing/overview/\"><span class=\"doc\">τρέξτε ολόκληρη την σουίτα ελέγχων του Django</span></a> για την εφαρμογή σας. Για ακόμη μια φορά, είναι χρήσιμο να ενεργοποιήσετε τα deprecation warnings ούτως ώστε να εμφανίζονται στην κονσόλα που τρέχει τα τεστ (μπορείτε επίσης να χρησιμοποιήσετε το flag για να τεστάρετε την εφαρμογή σας χειροκίνητα, χρησιμοποιώντας το <code class=\"docutils literal notranslate\"><span class=\"pre\">manage.py</span> <span class=\"pre\">runserver</span></code>):</p>\n<div class=\"console\" data-console><div class=\"console-panel\" data-platform=\"unix\"><p class=\"console-label\" id=\"console-2-unix-label\">Linux / macOS</p><div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"gp\">$ </span>python<span class=\"w\"> </span>-Wa<span class=\"w\"> </span>manage.py<span class=\"w\"> </span><span class=\"nb\">test</span>\n</code></pre></div>\n</div><div class=\"console-panel\" data-platform=\"windows\"><p class=\"console-label\" id=\"console-2-windows-label\">Windows</p><div class=\"code-block\" data-language=\"doscon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Windows</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Windows shell\"><code><span class=\"gp\">...\\&gt;</span> py -Wa manage.py test\n</code></pre></div></div></div>\n<p>Αφού έχετε τρέξει όλα τα τεστ, διορθώστε τυχόν περιπτώσεις που το τεστ δεν πέτυχε (failures). Όσο έχετε φρέσκιες τις σημειώσεις της διανομής του Django που αναβαθμίζετε, μια καλή ιδέα είναι να επωφεληθείτε των νέων χαρακτηριστικών της καινούργια έκδοσης και να αλλάξετε τον κώδικα σας, σε κάποια σημεία, για να εξαλείψετε τυχόν deprecation warnings.</p>\n</section>\n<section id=\"deployment\">\n<h2>Deployment<a class=\"heading-anchor\" href=\"#deployment\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Όταν είστε απολύτως σίγουροι ότι η εφαρμογή σας δουλεύει με την νέα έκδοση του Django, τότε είστε έτοιμοι να προχωρήσετε στο <a class=\"reference internal\" href=\"/el/2.2/howto/deployment/\"><span class=\"doc\">deployment</span></a> του αναβαθμισμένου, πλέον, Django project σας.</p>\n<p>Αν χρησιμοποιείτε το caching που παρέχει το Django, ίσως θα ήταν καλύτερα να αδειάσετε την μνήμη cache μετά την αναβάθμιση. Σε διαφορετική περίπτωση, ίσως να έχετε προβλήματα, για παράδειγμα, αν κάνετε caching τυχόν pickled objects καθώς αυτά τα objects δεν εγγυώνται ότι είναι συμβατά με όλες τις εκδόσεις του Django.  Μια παλαιότερη ασυμβατότητα ήταν το caching των object της κλάσης <a class=\"reference internal\" href=\"/el/2.2/ref/request-response/#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpResponse</span></code></a>, είτε απ’ ευθείας είτε εμμέσως μέσω του decorator <a class=\"reference internal\" href=\"/el/2.2/topics/cache/#django.views.decorators.cache.cache_page\" title=\"django.views.decorators.cache.cache_page\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">cache_page()</span></code></a>.</p>\n</section>","rootId":"upgrading-django-to-a-newer-version","toc":[{"title":"Απαραίτητη ανάγνωση","anchor":"required-reading","children":[]},{"title":"Dependencies","anchor":"dependencies","children":[]},{"title":"Επιλύοντας τα deprecation warnings","anchor":"resolving-deprecation-warnings","children":[]},{"title":"Εγκατάσταση","anchor":"installation","children":[]},{"title":"Τεστ","anchor":"testing","children":[]},{"title":"Deployment","anchor":"deployment","children":[]}],"breadcrumbs":[{"docname":"howto/index","title":"Οδηγοί «Πως-να»","url":"/el/2.2/howto/"}],"prev":{"docname":"howto/deployment/checklist","title":"Λίστα ελέγχου για το Deployment","url":"/el/2.2/howto/deployment/checklist/"},"next":{"docname":"howto/initial-data","title":"Παρέχοντας αρχικά δεδομένα στα μοντέλα","url":"/el/2.2/howto/initial-data/"},"formats":{"html":"/el/2.2/howto/upgrade-version/","markdown":"/el/2.2/howto/upgrade-version.md","json":"/el/2.2/howto/upgrade-version.json"},"source":"https://github.com/django/django/blob/stable/2.2.x/docs/howto/upgrade-version.txt","official":"https://docs.djangoproject.com/el/2.2/howto/upgrade-version/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0","1.11","1.10"],"inLocales":["en","zh-hans","fr","ja","id","pt-br","ko","es","el","pl"]}