看板 Python 關於我們 聯絡資訊
hello, 你好 你可以參考我的習慣, 1234照順序去做 以留言板來說: startapp guestbook 1.先想models, 看一下別人網站的留言板有什麼欄位, 標題、內容...所以得出結果 #guestbook/models.py from django.db import models from django.contrib.auth.models import User class Post(models.Model): author = models.ForeignKey(User) title = models.CharField(max_length=100) body = models.TextField() 2.處理forms 在guestbook目錄下開一個forms.py from .models import Post class PostForm(forms.ModelForm): class Meta: model = Post exclude = ('author',) 3.處理views #guestbook/views.py from .forms import PostForm from django.shortcuts import render_to_response from django.template import RequestContext def post_add(request): if request.method == 'POST': form = PostForm(request.POST) if form.is_valid(): obj = form.save(commit=False) obj.author = request.user obj.save() else: form = PostForm() return render_to_response('guestbook/post_add.html', { 'form': form }, context_instance=RequestContext(request)) 4.最後處理template 在專案目錄開一個templates/guestbook/post_add.html檔案 或是放在guestbook下面, 像這樣guestbook/templates/guestbook/post_add.html {% block extends "base.html" %} {% block content %} <form action="" method="post"> <table> {{ form.as_table }} </table> <input type="submit"> </form> {% endblock %} 專案的urls.py urlpatterns += patterns('', url(r'^guestbook/', include('guestbook.urls', namespace='guestbook')), ) 在guestbook的目錄下也開一個urls.py urlpatterns = patterns('guestbook', url(r'post_add', 'views.post_add', name='post_add'), ) 這樣你就可以在template url tag {% url namespace:urlname %} <a href="{% url guestbook:post_add %}">我要留言</a> 如果沒有取namespace的話建議 url的name前面建議加個prefix 如:url(r'post_add', 'views.post_add', name='guestbook_post_add') 這樣才不會跟別的app名稱衝到 建議不要直接把網址打在上面<a href="/guestbook/post_add">我要留言</a> 像是一台主機裡面掛很多網站 domain/projects/mysite1 domain/projects/mysite2 ... 可能有一百多個網站 這樣你在搬移專案目錄的時後才會對到正確的網址 依我個人經驗, 想要進步的話, 建議不用買書, 不要依賴編輯器去選擇關鍵字跟屬性, 我是使用gvim, 每天都要寫, 每一行程式碼都要自己打, 用手去記憶, 寫 -> debug -> 寫 -> debug ... 一直重複下去, 然後你就會發現debug次數越來越少. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.36.221.178 ※ 編輯: wutony76 來自: 114.36.221.178 (04/14 05:47)
birdhackor:我覺得寫程式的功力跟靠不靠編輯器選關鍵字無關吧... 04/14 12:03
birdhackor:自動補完只是讓你打程式更快而已 04/14 12:04
birdhackor:要讓debug的次數減少最好的方式應該還是多寫好的撰碼 04/14 12:08
birdhackor:方式~不要寫出結構不良的code 04/14 12:09
kusoayan:我也認同樓上說的 減少打字的時間沒什麼不好阿 重點還 04/14 12:33
kusoayan:是在於程式的架構 04/14 12:33
hello, 我看原作者應該是屬於沒有接觸過python, 而是接觸django才開始學python, 我有幾位朋友也是類似這種情形, 如果一開始就要求code要漂亮架構要完美, 會讓學習者產生挫折, 很快的...他就會放棄了, 他的學習方式可能是從網路上, 可能從書上, 然後可能直接把範例複製過來, 一開始就要面對幾十行或幾百行code, 很快他就暈了, 不想學了, 所以才建議自己去打每一行code, 讓他有一種蓋房子的感覺, 一行一行打, 可能打到某一行的時候, 他就會突然想到原來寫前面那幾行是為了什麼, 慢慢寫然後慢慢想過, 他不在害怕, 不會看到code就暈倒, 然後就會整理出自己的心得, 用自己的邏輯跟架構去寫程式, 這樣他就會有所成長, 因我一個人教學經驗有限, 針對沒接觸過python甚至沒寫過程式的人, 要來學習django所會面臨的問題, 也提不出更好的教法, 就請大家多提出有沒有更好的辦法跟學習方法, 來幫助這些人入門, 感恩. ※ 編輯: wutony76 來自: 114.36.221.178 (04/15 00:04)
birdhackor:其實練習好的寫法不一定要很多行的程式碼才能練 04/15 04:38
birdhackor:比如說寫了一個class共25行 寫完之後發現有地方可以簡 04/15 04:38
birdhackor:化就開始簡化,或是用幾個實例跑一跑發現思考的不夠周 04/15 04:39
birdhackor:全,就花點時間改善,這樣就可以練習更好的程式碼了 04/15 04:39
birdhackor:另外,以python而言的話,官網的tutorial有很多短的程 04/15 04:42
birdhackor:式碼,可以從那邊看起,那些程式碼多半不超過5行 04/15 04:44
birdhackor:然後有時候他會列出幾個可以得出同樣結果的程式碼 04/15 04:44
birdhackor:然後用文字陳述哪種寫法好,從這邊練起也可以 04/15 04:44
birdhackor:我覺得要練習好的寫法有時候需要有點潔癖啦 04/15 04:46
birdhackor:有時候寫某些功能一開始一定會先求"跑得出結果" 04/15 04:46
birdhackor:但做法會很醜,這時候就會有點受不了,不改會不舒服... 04/15 04:46
birdhackor:其實我也不強 不過我覺得這有時候真的是態度問題 04/15 04:47
birdhackor:像我朋友他對於改出好程式碼就沒啥興趣...都只求能跑 04/15 04:48
birdhackor:我看到他的程式碼就會很不自在... 04/15 04:48
birdhackor:然後,既然要學python那麼除了程式架構本身以外,也應 04/15 04:54
birdhackor:該稍微注意程式碼本身的排版,python有個不錯的指引 04/15 04:55
birdhackor:http://www.python.org/dev/peps/pep-0008/ 04/15 04:55
birdhackor:上面是英文的 要翻譯版可以看這裡 http://j.mp/HUrUoq 04/15 04:55
birdhackor:關於精進程式碼 有篇文章我覺得挺值得看看 04/15 04:59
birdhackor:http://www.jaceju.net/blog/archives/1913/ 04/15 04:59
birdhackor:精進你的程式碼 - 從取得用戶端 IP 的函式談起 04/15 04:59
birdhackor:整個function很短,是個不錯的例子 04/15 04:59
legnaleurc:你可以回文 ... 04/15 14:51