Professional Documents
Culture Documents
3 getstarted:
install tutorial
Basicwikiin0.3
BasicwikiinWebpy0.3.Demonstratesbasicideabehindwiki.Lacksrevisions.
learnmore:
apireference cookbook codeexamples
Files
/ s c h e m a . s q l / w i k i . p y / t e m p l a t e s : / t e m p l a t e s / v i e w . h t m l / t e m p l a t e s / n e w . h t m l / t e m p l a t e s / b a s e . h t m l / t e m p l a t e s / i n d e x . h t m l / t e m p l a t e s / e d i t . h t m l / m o d e l . p y
divein:
sourcecode mailinglist issuetracker
/schema.sql
C R E A T ET A B L Ep a g e s( i dI N TA U T O _ I N C R E M E N T , u r lT E X T , t i t l eT E X T , c o n t e n tT E X T , p r i m a r yk e y( i d ) ) ;
/wiki.py
" " "B a s i cw i k iu s i n gw e b p y0 . 3" " " i m p o r tw e b i m p o r tm o d e l i m p o r tm a r k d o w n # # #U r lm a p p i n g s
u r l s=( ' / ' ,' I n d e x ' , ' / n e w ' ,' N e w ' , ' / e d i t / ( \ d + ) ' ,' E d i t ' , ' / d e l e t e / ( \ d + ) ' ,' D e l e t e ' , ' / ( . * ) ' ,' P a g e ' , )
# # #T e m p l a t e s t _ g l o b a l s={ ' d a t e s t r ' :w e b . d a t e s t r , ' m a r k d o w n ' :m a r k d o w n . m a r k d o w n , } r e n d e r=w e b . t e m p l a t e . r e n d e r ( ' t e m p l a t e s ' ,b a s e = ' b a s e ' ,g l o b a l s = t _ g l o b a l s )
d e s c r i p t i o n = " L o c a t i o n : " ) , w e b . f o r m . T e x t b o x ( ' t i t l e ' ,w e b . f o r m . n o t n u l l , s i z e = 3 0 , d e s c r i p t i o n = " P a g et i t l e : " ) , w e b . f o r m . T e x t a r e a ( ' c o n t e n t ' ,w e b . f o r m . n o t n u l l , r o w s = 3 0 ,c o l s = 8 0 , d e s c r i p t i o n = " P a g ec o n t e n t : " ,p o s t = " U s em a r k d o w ns y n t a x " ) , w e b . f o r m . B u t t o n ( ' C r e a t ep a g e ' ) , ) d e fG E T ( s e l f ) : u r l=w e b . i n p u t ( u r l = ' ' ) . u r l f o r m=s e l f . f o r m ( ) f o r m . f i l l ( { ' u r l ' : u r l } ) r e t u r nr e n d e r . n e w ( f o r m ) d e fP O S T ( s e l f ) : f o r m=s e l f . f o r m ( ) i fn o tf o r m . v a l i d a t e s ( ) : r e t u r nr e n d e r . n e w ( f o r m ) m o d e l . n e w _ p a g e ( f o r m . d . u r l ,f o r m . d . t i t l e ,f o r m . d . c o n t e n t ) r a i s ew e b . s e e o t h e r ( ' / '+f o r m . d . u r l )
c l a s sD e l e t e : d e fP O S T ( s e l f ,i d ) : m o d e l . d e l _ p a g e ( i n t ( i d ) ) r a i s ew e b . s e e o t h e r ( ' / ' )
c l a s sE d i t : f o r m=w e b . f o r m . F o r m ( w e b . f o r m . T e x t b o x ( ' u r l ' ,w e b . f o r m . n o t n u l l , s i z e = 3 0 , d e s c r i p t i o n = " L o c a t i o n : " ) , w e b . f o r m . T e x t b o x ( ' t i t l e ' ,w e b . f o r m . n o t n u l l , s i z e = 3 0 , d e s c r i p t i o n = " P a g et i t l e : " ) , w e b . f o r m . T e x t a r e a ( ' c o n t e n t ' ,w e b . f o r m . n o t n u l l , r o w s = 3 0 ,c o l s = 8 0 , d e s c r i p t i o n = " P a g ec o n t e n t : " ,p o s t = " U s em a r k d o w ns y n t a x " ) , w e b . f o r m . B u t t o n ( ' U p d a t ep a g e ' ) , ) d e fG E T ( s e l f ,i d ) :
p a g e=m o d e l . g e t _ p a g e _ b y _ i d ( i n t ( i d ) ) f o r m=s e l f . f o r m ( ) f o r m . f i l l ( p a g e ) r e t u r nr e n d e r . e d i t ( p a g e ,f o r m )
/templates/view.html
$ d e fw i t h( p a g e ) $ v a rt i t l e :$ p a g e . t i t l e < h 1 > $ p a g e . t i t l e < / h 1 > $ : m a r k d o w n ( p a g e . c o n t e n t )
/templates/new.html
$ d e fw i t h( f o r m )
< h 1 > N e wW i k iP a g e < / h 1 > < f o r ma c t i o n = " "m e t h o d = " p o s t " > $ : f o r m . r e n d e r ( ) < / f o r m >
/templates/base.html
$ d e fw i t h( p a g e ) < h t m l > < h e a d > $ i fp a g e . h a s _ k e y ( ' t i t l e ' ) : < t i t l e > $ p a g e . t i t l e < / t i t l e > $ e l s e : < t i t l e > M yW i k i < / t i t l e > < s t y l e > < / s t y l e > < / h e a d > < b o d y > < u l > < l i > < ah r e f = " / " > H o m e < / a > < / l i > < l i > < ah r e f = " / n e w " > N e wP a g e < / a > < / l i > < / u l > $ : p a g e < / b o d y > < / h t m l >
/templates/index.html
$ d e fw i t h( p a g e s ) < h 1 > W e b p yW i k i < / h 1 > < h 2 > P a g e s : < / h 2 > < u l > $ f o rp a g ei np a g e s : < l i > < ah r e f = " / $ p a g e . u r l " > $ p a g e . u r l < / a > < / l i > < / u l >
/templates/edit.html
$ d e fw i t h( p a g e ,f o r m )
< h 1 > E d i t$ f o r m . d . t i t l e < / h 1 > < f o r ma c t i o n = " "m e t h o d = " p o s t " > $ : f o r m . r e n d e r ( ) < / f o r m >
< h 2 > D e l e t ep a g e ? < / h 2 > < f o r ma c t i o n = " / d e l e t e / $ p a g e . i d "m e t h o d = " p o s t " > < i n p u tt y p e = " s u b m i t "v a l u e = " D e l e t ep a g e " / > < / f o r m >
/model.py
i m p o r tw e b d b=w e b . d a t a b a s e ( d b n = ' m y s q l ' ,d b = ' w i k i ' ,u s e r = ' j u s t i n ' ) d e fg e t _ p a g e s ( ) : r e t u r nd b . s e l e c t ( ' p a g e s ' ,o r d e r = ' i dD E S C ' ) d e fg e t _ p a g e _ b y _ u r l ( u r l ) : t r y : r e t u r nd b . s e l e c t ( ' p a g e s ' ,w h e r e = ' u r l = $ u r l ' ,v a r s = l o c a l s ( ) ) [ 0 ] e x c e p tI n d e x E r r o r : r e t u r nN o n e d e fg e t _ p a g e _ b y _ i d ( i d ) : t r y : r e t u r nd b . s e l e c t ( ' p a g e s ' ,w h e r e = ' i d = $ i d ' ,v a r s = l o c a l s ( ) ) [ 0 ] e x c e p tI n d e x E r r o r : r e t u r nN o n e d e fn e w _ p a g e ( u r l ,t i t l e ,t e x t ) : d b . i n s e r t ( ' p a g e s ' ,u r l = u r l ,t i t l e = t i t l e ,c o n t e n t = t e x t ) d e fd e l _ p a g e ( i d ) : d b . d e l e t e ( ' p a g e s ' ,w h e r e = " i d = $ i d " ,v a r s = l o c a l s ( ) ) d e fu p d a t e _ p a g e ( i d ,u r l ,t i t l e ,t e x t ) : d b . u p d a t e ( ' p a g e s ' ,w h e r e = " i d = $ i d " ,v a r s = l o c a l s ( ) , u r l = u r l ,t i t l e = t i t l e ,c o n t e n t = t e x t )
startedbyAaronSwartz(webpy@aaronsw.com) forkthispageonGitHub