{"id":39,"date":"2011-08-01T09:45:00","date_gmt":"2011-08-01T09:45:00","guid":{"rendered":"http:\/\/e-ware.org\/blog\/?p=39"},"modified":"2011-08-01T09:45:00","modified_gmt":"2011-08-01T09:45:00","slug":"django-creare-fields-readonly","status":"publish","type":"post","link":"http:\/\/e-ware.org\/blog\/django-creare-fields-readonly\/","title":{"rendered":"Django: Creare fields readonly"},"content":{"rendered":"<div><span>Il progetto <b>Django<\/b> ha come scopo la creazione di un <b>framework<\/b>, rivolto al web, mediante il quale \u00e8 possibile creare in maniera facile e veloce siti o portali web dinamici usando la comoda sintassi del <b>Python<\/b> e gli strumenti messi a disposizione dal progetto stesso.\u00a0<\/span><\/div>\n<div><\/div>\n<div><span>Lo sviluppo di siti web in Django prevede l&#8217;adesione dello stesso agli standard della programmazione <b>MTV<\/b> (Model-Template-View). Per maggiori informazioni vi invito ad effettuare delle ricerche nel web.<\/span><\/div>\n<div><\/div>\n<div><span>Grazie a Django \u00e8 possibile creare dei form da inserire nelle proprie pagine web per poter eseguire comuni operazioni a cui si \u00e8 gi\u00e0 abituati: impostazione di filtri sui dati, invio di email, iscrizione ad un servizio, etc. I vari campi che costituiscono il form vengono chiamati <b>fields<\/b>. Pu\u00f2 essere necessario, a volte, dover visualizzare un field in modalit\u00e0 di sola lettura ad esempio per poter mostrare agli utenti un dato senza permetterne la modifica.\u00a0<\/span><\/div>\n<div><\/div>\n<div><span>Immaginiamo di dover crear un form per l&#8217;invio delle email che mostri all&#8217;utente l&#8217;indirizzo di posta elettronica del webmaster a cui verr\u00e0 inviata la segnalazione. Il seguente articolo mostrer\u00e0 semplicemente il sistema di gestione dei widget. Ogni altra operazione verr\u00e0 considerata come gi\u00e0 nota all&#8217;utente che legge il seguente articolo.<\/span><\/div>\n<div><span><br \/><\/span><\/div>\n<div><span>Rechiamoci nel file views.py dell&#8217;applicazione del nostro progetto. Spostiamoci alla fine dello stesso ed inseriamo il seguente codice:<\/span><\/div>\n<p><span><i>class mail_form(forms.Form):<\/i><\/span><br \/><span><i>\u00a0\u00a0\u00a0\u00a0    webmaster-mail = forms.CharField(widget = forms.TextInput(attrs={&#8216;readonly&#8217;:&#8217;readonly&#8217;}))<\/i><\/span><br \/><span><i>\u00a0\u00a0\u00a0\u00a0    user_mail = forms.EmailField()<\/i><\/span><br \/><span><i>\u00a0\u00a0\u00a0\u00a0    user_name = forms.CharField()<\/i><\/span><br \/><span><i>\u00a0\u00a0\u00a0\u00a0    mail_content = forms.CharField(<\/i>)<\/span><\/p>\n<div><span><br \/><\/span><\/div>\n<div><span><br \/><\/span><\/div>\n<div><span>Come si pu\u00f2 vedere il campo <i>webmaster_mail<\/i> \u00e8 impostato, mediante la propriet\u00e0 widget, in modalit\u00e0 di sola lettura.\u00a0<\/span><\/div>\n<div><\/div>\n<div><span>Nell&#8217;immagine che segue \u00e8 possibile vedere la differenza tra un CharField tradizione ed uno in sola lettura.<\/span><\/div>\n<div><\/div>\n<div><span> <\/span><\/div>\n<div><a href=\"http:\/\/4.bp.blogspot.com\/-MY9DArpoW1k\/TjZ1kGjr5zI\/AAAAAAAAA_I\/DaruY_k-Aas\/s1600\/djangoreadonly.jpg\" imageanchor=\"1\"><img loading=\"lazy\" decoding=\"async\" border=\"0\" height=\"50\" src=\"http:\/\/4.bp.blogspot.com\/-MY9DArpoW1k\/TjZ1kGjr5zI\/AAAAAAAAA_I\/DaruY_k-Aas\/s320\/djangoreadonly.jpg\" width=\"320\"><\/a><\/div>\n<div><span> <\/span><\/div>\n<div><\/div>\n<div><span>Questo sistema ovviamente pu\u00f2 essere utilizzato su ogni tipo di field cos\u00ec da permetterne la visualizzazione e non la modifica.<\/span><\/div>\n<div>\u00a0\u00a0 <\/div>\n","protected":false},"excerpt":{"rendered":"<p>Il progetto Django ha come scopo la creazione di un framework, rivolto al web, mediante il quale \u00e8 possibile creare in maniera facile e veloce siti o portali web dinamici usando la comoda sintassi del Python e gli strumenti messi a disposizione dal progetto stesso.\u00a0 Lo sviluppo di siti web in Django prevede l&#8217;adesione dello [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[31,4,5],"tags":[],"class_list":["post-39","post","type-post","status-publish","format-standard","hentry","category-django","category-opencode","category-python"],"views":1159,"_links":{"self":[{"href":"http:\/\/e-ware.org\/blog\/wp-json\/wp\/v2\/posts\/39","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/e-ware.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/e-ware.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/e-ware.org\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/e-ware.org\/blog\/wp-json\/wp\/v2\/comments?post=39"}],"version-history":[{"count":0,"href":"http:\/\/e-ware.org\/blog\/wp-json\/wp\/v2\/posts\/39\/revisions"}],"wp:attachment":[{"href":"http:\/\/e-ware.org\/blog\/wp-json\/wp\/v2\/media?parent=39"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/e-ware.org\/blog\/wp-json\/wp\/v2\/categories?post=39"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/e-ware.org\/blog\/wp-json\/wp\/v2\/tags?post=39"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}