{"title":"How to upgrade Django to a newer version","version":"4.1","locale":"el","docname":"howto/upgrade-version","url":"/el/4.1/howto/upgrade-version/","canonical":"https://djangodocs.dev/el/4.1/howto/upgrade-version/","summary":"Παρόλο που μπορεί, μερικές φορές, να είναι περίπλοκη διαδικασία, η αναβάθμιση στην τελευταία έκδοση του Django έχει πολλά οφέλη: Προσθήκη καινούργιων λειτουργίων…","html":"<h1>How to upgrade Django to a newer version<a class=\"heading-anchor\" href=\"#how-to-upgrade-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/4.1/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/4.1/internals/release-process/\"><span class=\"doc\">οδηγό της διαδικασίας για διαφορετικές εκδόσεις</span></a>.</p>\n<p>Afterward, you should familiarize yourself with the changes that were made in\nthe new Django version(s):</p>\n<ul class=\"simple\">\n<li><p>Διαβάστε το άρθρο <a class=\"reference internal\" href=\"/el/4.1/releases/\"><span class=\"doc\">σημειώσεις διανομής</span></a> για κάθε “final” διανομή από την αμέσως επόμενη της δικής σας έκδοσης μέχρι αυτή που θέλετε να αναβαθμίσετε.</p></li>\n<li><p>Δείτε στο άρθρο <a class=\"reference internal\" href=\"/el/4.1/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. 2.0 to 2.2),\nit’s usually easier to upgrade through each feature release incrementally\n(2.0 to 2.1 to 2.2) rather than to make all the changes for each feature\nrelease at once. For each feature release, use the latest patch release (e.g.\nfor 2.1, use 2.1.15).</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>If you’re not using the Django test runner, you may need to also ensure that\nany console output is not captured which would hide deprecation warnings. For\nexample, if you use <a class=\"reference external\" href=\"https://docs.pytest.org/\">pytest</a>:</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>pytest<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>Once you’re ready, it is time to <a class=\"reference internal\" href=\"/el/4.1/topics/install/\"><span class=\"doc\">install the new Django version</span></a>. If you are using a <a class=\"reference external\" href=\"https://docs.python.org/3/library/venv.html#module-venv\" title=\"(στη Python έκδοση 3.14)\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">virtual</span> <span class=\"pre\">environment</span></code></a> and it\nis a major upgrade, you might want to set up a new environment with all the\ndependencies first.</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>python<span class=\"w\"> </span>-m<span class=\"w\"> </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> py -m 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/4.1/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/4.1/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/4.1/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/4.1/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":"how-to-upgrade-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/4.1/howto/"}],"prev":{"docname":"howto/deployment/checklist","title":"Λίστα ελέγχου για το Deployment","url":"/el/4.1/howto/deployment/checklist/"},"next":{"docname":"howto/error-reporting","title":"How to manage error reporting","url":"/el/4.1/howto/error-reporting/"},"formats":{"html":"/el/4.1/howto/upgrade-version/","markdown":"/el/4.1/howto/upgrade-version.md","json":"/el/4.1/howto/upgrade-version.json"},"source":"https://github.com/django/django/blob/stable/4.1.x/docs/howto/upgrade-version.txt","official":"https://docs.djangoproject.com/el/4.1/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","it","pt-br","ko","es","el","pl"]}