Re: [討論] Django菜鳥 怎麼打地基啊?

看板Python作者 (米粉湯)時間13年前 (2012/04/14 04:55), 編輯推噓0(0029)
留言29則, 3人參與, 最新討論串1/1
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)

04/14 12:03, , 1F
我覺得寫程式的功力跟靠不靠編輯器選關鍵字無關吧...
04/14 12:03, 1F

04/14 12:04, , 2F
自動補完只是讓你打程式更快而已
04/14 12:04, 2F

04/14 12:08, , 3F
要讓debug的次數減少最好的方式應該還是多寫好的撰碼
04/14 12:08, 3F

04/14 12:09, , 4F
方式~不要寫出結構不良的code
04/14 12:09, 4F

04/14 12:33, , 5F
我也認同樓上說的 減少打字的時間沒什麼不好阿 重點還
04/14 12:33, 5F

04/14 12:33, , 6F
是在於程式的架構
04/14 12:33, 6F
hello, 我看原作者應該是屬於沒有接觸過python, 而是接觸django才開始學python, 我有幾位朋友也是類似這種情形, 如果一開始就要求code要漂亮架構要完美, 會讓學習者產生挫折, 很快的...他就會放棄了, 他的學習方式可能是從網路上, 可能從書上, 然後可能直接把範例複製過來, 一開始就要面對幾十行或幾百行code, 很快他就暈了, 不想學了, 所以才建議自己去打每一行code, 讓他有一種蓋房子的感覺, 一行一行打, 可能打到某一行的時候, 他就會突然想到原來寫前面那幾行是為了什麼, 慢慢寫然後慢慢想過, 他不在害怕, 不會看到code就暈倒, 然後就會整理出自己的心得, 用自己的邏輯跟架構去寫程式, 這樣他就會有所成長, 因我一個人教學經驗有限, 針對沒接觸過python甚至沒寫過程式的人, 要來學習django所會面臨的問題, 也提不出更好的教法, 就請大家多提出有沒有更好的辦法跟學習方法, 來幫助這些人入門, 感恩. ※ 編輯: wutony76 來自: 114.36.221.178 (04/15 00:04)

04/15 04:38, , 7F
其實練習好的寫法不一定要很多行的程式碼才能練
04/15 04:38, 7F

04/15 04:38, , 8F
比如說寫了一個class共25行 寫完之後發現有地方可以簡
04/15 04:38, 8F

04/15 04:39, , 9F
化就開始簡化,或是用幾個實例跑一跑發現思考的不夠周
04/15 04:39, 9F

04/15 04:39, , 10F
全,就花點時間改善,這樣就可以練習更好的程式碼了
04/15 04:39, 10F

04/15 04:42, , 11F
另外,以python而言的話,官網的tutorial有很多短的程
04/15 04:42, 11F

04/15 04:44, , 12F
式碼,可以從那邊看起,那些程式碼多半不超過5行
04/15 04:44, 12F

04/15 04:44, , 13F
然後有時候他會列出幾個可以得出同樣結果的程式碼
04/15 04:44, 13F

04/15 04:44, , 14F
然後用文字陳述哪種寫法好,從這邊練起也可以
04/15 04:44, 14F

04/15 04:46, , 15F
我覺得要練習好的寫法有時候需要有點潔癖啦
04/15 04:46, 15F

04/15 04:46, , 16F
有時候寫某些功能一開始一定會先求"跑得出結果"
04/15 04:46, 16F

04/15 04:46, , 17F
但做法會很醜,這時候就會有點受不了,不改會不舒服...
04/15 04:46, 17F

04/15 04:47, , 18F
其實我也不強 不過我覺得這有時候真的是態度問題
04/15 04:47, 18F

04/15 04:48, , 19F
像我朋友他對於改出好程式碼就沒啥興趣...都只求能跑
04/15 04:48, 19F

04/15 04:48, , 20F
我看到他的程式碼就會很不自在...
04/15 04:48, 20F

04/15 04:54, , 21F
然後,既然要學python那麼除了程式架構本身以外,也應
04/15 04:54, 21F

04/15 04:55, , 22F
該稍微注意程式碼本身的排版,python有個不錯的指引
04/15 04:55, 22F

04/15 04:55, , 23F

04/15 04:55, , 24F
上面是英文的 要翻譯版可以看這裡 http://j.mp/HUrUoq
04/15 04:55, 24F

04/15 04:59, , 25F
關於精進程式碼 有篇文章我覺得挺值得看看
04/15 04:59, 25F

04/15 04:59, , 26F

04/15 04:59, , 27F
精進你的程式碼 - 從取得用戶端 IP 的函式談起
04/15 04:59, 27F

04/15 04:59, , 28F
整個function很短,是個不錯的例子
04/15 04:59, 28F

04/15 14:51, , 29F
你可以回文 ...
04/15 14:51, 29F
文章代碼(AID): #1FY9B98o (Python)
文章代碼(AID): #1FY9B98o (Python)