-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathxadminru-men-2.html
315 lines (266 loc) · 23.4 KB
/
xadminru-men-2.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
<!DOCTYPE html>
<!--[if IEMobile 7 ]><html class="no-js iem7"><![endif]-->
<!--[if lt IE 9]><html class="no-js lte-ie8"><![endif]-->
<!--[if (gt IE 8)|(gt IEMobile 7)|!(IEMobile)|!(IE)]><!--><html class="no-js" lang="en"><!--<![endif]-->
<head>
<link rel="short icon" href="http://softing.qiniudn.com/20140603011448867_easyicon_net_128.ico" type="image/x-ico">
<meta charset="utf-8">
<title>Xadmin入门(2)</title>
<meta name="author" content="tulpar">
<!-- http://t.co/dKP3o1e -->
<meta name="HandheldFriendly" content="True">
<meta name="MobileOptimized" content="320">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- <link href="/favicon.png" rel="icon"> -->
<link href="/theme/css/main.css" media="screen, projection"
rel="stylesheet" type="text/css">
<script src="/theme/js/modernizr-2.0.js"></script>
<script src="/theme/js/ender.js"></script>
<script src="/theme/js/octopress.js" type="text/javascript"></script>
<link href="http://fonts.googleapis.com/css?family=PT+Serif:regular,italic,bold,bolditalic"
rel="stylesheet" type="text/css">
<link href="http://fonts.googleapis.com/css?family=PT+Sans:regular,italic,bold,bolditalic"
rel="stylesheet" type="text/css">
</head>
<body>
<header role="banner"><hgroup>
<h1><a href="/">Dreaming</a></h1>
</hgroup></header>
<nav role="navigation"><ul class="subscription" data-subscription="rss">
</ul>
<ul class="main-navigation">
<li class="active">
<a href="/category/it.html">It</a>
</li>
<li >
<a href="/category/life.html">Life</a>
</li>
</ul></nav>
<div id="main">
<div id="content">
<div>
<article class="hentry" role="article">
<header>
<h1 class="entry-title">Xadmin入门(2)</h1>
<p class="meta"><time datetime="2014-06-13T00:00:00+08:00" pubdate>Fri 13 June 2014</time></p>
</header>
<div class="entry-content"><h2>Xadmin 的插件介绍</h2>
<p>(本来想自己总结一遍的,可太喜欢Xadmin的文档了,言简意赅,排版精美,就直接搬了,望大侠们勿喷)</p>
<h3>1. Action</h3>
<h4>功能</h4>
<p>Action 插件在数据列表页面提供了数据选择功能, 选择后的数据可以经过 Action 做特殊的处理. 默认提供的 Action 为批量删除功能.</p>
<h4>截图</h4>
<p><img alt="Action" src="http://xadmin.readthedocs.org/en/docs-chinese/_images/action.png" /></p>
<h4>使用</h4>
<p>开发者可以设置 Model OptionClass 的 actions 属性, 该属性是一个列表, 包含您想启用的 Action 的类. 系统已经默认内置了删除数据的 Action, 当然您可以自己制作 Action 来实现特定的功能, 制作 Action 的实例如下.</p>
<p>首先要创建一个 Action 类, 该类需要继承 BaseActionView. BaseActionView 是 ModelAdminView 的子类:</p>
<div class="highlight"><pre><span class="n">from</span> <span class="n">xadmin</span><span class="p">.</span><span class="n">plugins</span><span class="p">.</span><span class="n">actions</span> <span class="n">import</span> <span class="n">BaseActionView</span>
<span class="n">class</span> <span class="n">MyAction</span><span class="p">(</span><span class="n">BaseActionView</span><span class="p">)</span><span class="o">:</span>
<span class="err">#</span> <span class="err">这里需要填写三个属性</span>
<span class="n">action_name</span> <span class="o">=</span> <span class="s">"my_action"</span> <span class="err">#</span><span class="o">:</span> <span class="err">相当于这个</span> <span class="n">Action</span> <span class="err">的唯一标示</span><span class="p">,</span> <span class="err">尽量用比较针对性的名字</span>
<span class="n">description</span> <span class="o">=</span> <span class="n">_</span><span class="p">(</span><span class="n">u</span><span class="err">'</span><span class="n">Test</span> <span class="n">selected</span> <span class="o">%</span><span class="p">(</span><span class="n">verbose_name_plural</span><span class="p">)</span><span class="n">s</span><span class="err">'</span><span class="p">)</span> <span class="err">#</span><span class="o">:</span> <span class="err">描述</span><span class="p">,</span> <span class="err">出现在</span> <span class="n">Action</span> <span class="err">菜单中</span><span class="p">,</span> <span class="err">可以使用</span> <span class="err">``</span><span class="o">%</span><span class="p">(</span><span class="n">verbose_name_plural</span><span class="p">)</span><span class="n">s</span><span class="err">``</span> <span class="err">代替</span> <span class="n">Model</span> <span class="err">的名字</span><span class="p">.</span>
<span class="n">model_perm</span> <span class="o">=</span> <span class="err">'</span><span class="n">change</span><span class="err">'</span> <span class="err">#</span><span class="o">:</span> <span class="err">该</span> <span class="n">Action</span> <span class="err">所需权限</span>
<span class="err">#</span> <span class="err">而后实现</span> <span class="n">do_action</span> <span class="err">方法</span>
<span class="n">def</span> <span class="n">do_action</span><span class="p">(</span><span class="n">self</span><span class="p">,</span> <span class="n">queryset</span><span class="p">)</span><span class="o">:</span>
<span class="err">#</span> <span class="n">queryset</span> <span class="err">是包含了已经选择的数据的</span> <span class="n">queryset</span>
<span class="k">for</span> <span class="n">obj</span> <span class="n">in</span> <span class="n">queryset</span><span class="o">:</span>
<span class="err">#</span> <span class="n">obj</span> <span class="err">的操作</span>
<span class="p">...</span>
<span class="err">#</span> <span class="err">返回</span> <span class="n">HttpResponse</span>
<span class="k">return</span> <span class="n">HttpResponse</span><span class="p">(...)</span>
</pre></div>
<p>然后在 Model 的 OptionClass 中使用这个 Action:</p>
<div class="highlight"><pre><span class="n">class</span> <span class="n">MyModelAdmin</span><span class="p">(</span><span class="n">object</span><span class="p">)</span><span class="o">:</span>
<span class="n">actions</span> <span class="o">=</span> <span class="p">[</span><span class="n">MyAction</span><span class="p">,</span> <span class="p">]</span>
</pre></div>
<p>这样就完成了自己的 Action</p>
<h4>API</h4>
<div class="highlight"><pre><span class="n">class</span> <span class="n">xadmin</span><span class="p">.</span><span class="n">plugins</span><span class="p">.</span><span class="n">actions</span><span class="p">.</span><span class="n">ActionPlugin</span><span class="p">(</span><span class="n">admin_view</span><span class="p">)</span>
</pre></div>
<h4>我的效果如下: <a href="https://github.com/tulpar008/testing_Xadmin">我的源码在此</a></h4>
<p><img alt="Action" src="http://tulparblog.qiniudn.com/xadmin2action.png" /></p>
<h3>2. 数据过滤器</h3>
<h4>功能</h4>
<p>在数据列表页面提供数据过滤功能, 包括: 模糊搜索, 数字范围搜索, 日期搜索等等</p>
<h4>截图</h4>
<p><img alt="数据过滤器" src="http://xadmin.readthedocs.org/en/docs-chinese/_images/filter.png" /></p>
<h4>使用</h4>
<p>在 Model OptionClass 中设置以下属性: </p>
<p><code>list_filter</code> 属性: </p>
<p>该属性指定可以过滤的列的名字, 系统会自动生成搜索器 </p>
<p><code>search_fields</code> 属性: </p>
<p>属性指定可以通过搜索框搜索的数据列的名字, 搜索框搜索使用的是模糊查找的方式, 一般用来搜素名字等字符串字段 </p>
<p><code>free_query_filter</code> 属性: </p>
<p>默认为 True , 指定是否可以自由搜索. 如果开启自有搜索, 用户可以通过 url 参数来进行特定的搜索, 例如: </p>
<p><code>http://xxx.com/xadmin/auth/user/?name__contains=tony</code>
使用过滤器的例子: </p>
<div class="highlight"><pre><span class="n">class</span> <span class="n">UserAdmin</span><span class="p">(</span><span class="n">object</span><span class="p">)</span><span class="o">:</span>
<span class="n">list_filter</span> <span class="o">=</span> <span class="p">(</span><span class="err">'</span><span class="n">is_staff</span><span class="err">'</span><span class="p">,</span> <span class="err">'</span><span class="n">is_superuser</span><span class="err">'</span><span class="p">,</span> <span class="err">'</span><span class="n">is_active</span><span class="err">'</span><span class="p">)</span>
<span class="n">search_fields</span> <span class="o">=</span> <span class="p">(</span><span class="err">'</span><span class="n">username</span><span class="err">'</span><span class="p">,</span> <span class="err">'</span><span class="n">first_name</span><span class="err">'</span><span class="p">,</span> <span class="err">'</span><span class="n">last_name</span><span class="err">'</span><span class="p">,</span> <span class="err">'</span><span class="n">email</span><span class="err">'</span><span class="p">)</span>
</pre></div>
<h4>制作过滤器</h4>
<p>您也可以制作自己的过滤器, 用来进行一些特定的过滤. 过滤器需要继承 <code>xadmin.filters.BaseFilter</code> 类, 并使用 <code>xadmin.filters.manager</code> 注册过滤器.</p>
<h4><a href="https://github.com/tulpar008/testing_Xadmin/tree/master">我的源码在此</a> 我的效果如下</h4>
<p><img alt="数据过滤" src="http://tulparblog.qiniudn.com/xadmin2%E6%95%B0%E6%8D%AE%E8%BF%87%E6%BB%A4%E5%99%A8.png" /></p>
<h3>3. 图表插件</h3>
<h4>功能</h4>
<p>在数据列表页面, 跟列表数据生成图表. 可以指定多个数据列, 生成多个图表.</p>
<h4>截图</h4>
<p><img alt="图表" src="http://xadmin.readthedocs.org/en/docs-chinese/_images/chart.png" /></p>
<h4>使用</h4>
<p>在 Model OptionClass 中设定 data_charts 属性, 该属性为 dict 类型, key 是图表的标示名称, value 是图表的具体设置属性. 使用示例: </p>
<div class="highlight"><pre><span class="n">class</span> <span class="n">RecordAdmin</span><span class="p">(</span><span class="n">object</span><span class="p">)</span><span class="o">:</span>
<span class="n">data_charts</span> <span class="o">=</span> <span class="p">{</span>
<span class="s">"user_count"</span><span class="o">:</span> <span class="p">{</span><span class="err">'</span><span class="n">title</span><span class="err">'</span><span class="o">:</span> <span class="n">u</span><span class="s">"User Report"</span><span class="p">,</span> <span class="s">"x-field"</span><span class="o">:</span> <span class="s">"date"</span><span class="p">,</span> <span class="s">"y-field"</span><span class="o">:</span> <span class="p">(</span><span class="s">"user_count"</span><span class="p">,</span> <span class="s">"view_count"</span><span class="p">),</span> <span class="s">"order"</span><span class="o">:</span> <span class="p">(</span><span class="err">'</span><span class="n">date</span><span class="err">'</span><span class="p">,)},</span>
<span class="s">"avg_count"</span><span class="o">:</span> <span class="p">{</span><span class="err">'</span><span class="n">title</span><span class="err">'</span><span class="o">:</span> <span class="n">u</span><span class="s">"Avg Report"</span><span class="p">,</span> <span class="s">"x-field"</span><span class="o">:</span> <span class="s">"date"</span><span class="p">,</span> <span class="s">"y-field"</span><span class="o">:</span> <span class="p">(</span><span class="err">'</span><span class="n">avg_count</span><span class="err">'</span><span class="p">,),</span> <span class="s">"order"</span><span class="o">:</span> <span class="p">(</span><span class="err">'</span><span class="n">date</span><span class="err">'</span><span class="p">,)}</span>
<span class="p">}</span>
</pre></div>
<p>图表的主要属性为: </p>
<p><code>title</code> : 图表的显示名称 </p>
<p><code>x-field</code> : 图表的 X 轴数据列, 一般是日期, 时间等 </p>
<p><code>y-field</code> : 图表的 Y 轴数据列, 该项是一个 list, 可以同时设定多个列, 这样多个列的数据会在同一个图表中显示 </p>
<p><code>order</code> : 排序信息, 如果不写则使用数据列表的排序 </p>
<h4>API</h4>
<div class="highlight"><pre><span class="n">class</span> <span class="n">xadmin</span><span class="p">.</span><span class="n">plugins</span><span class="p">.</span><span class="n">chart</span><span class="p">.</span><span class="n">ChartsPlugin</span><span class="p">(</span><span class="n">admin_view</span><span class="p">)[</span><span class="n">source</span><span class="p">]</span>
<span class="n">class</span> <span class="n">xadmin</span><span class="p">.</span><span class="n">plugins</span><span class="p">.</span><span class="n">chart</span><span class="p">.</span><span class="n">ChartsView</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)[</span><span class="n">source</span><span class="p">]</span><span class="err">¶</span>
</pre></div>
<h4>我的效果图:不知怎么也没弄出图表。。。。。<a href="https://github.com/tulpar008/testing_Xadmin/tree/master">我的代码在此</a></h4>
<p><img alt="图表" src="http://tulparblog.qiniudn.com/xadmin2%E5%9B%BE%E8%A1%A8%E6%8F%92%E4%BB%B6.png" /></p>
<h3>4.数据导出</h3>
<h4>功能</h4>
<p>该插件在数据列表页面提供了数据导出功能, 可以导出 <code>Excel</code>, <code>CSV</code>, <code>XML</code>, <code>json</code> 格式. </p>
<h4>截图</h4>
<p><img alt="数据导出" src="http://xadmin.readthedocs.org/en/docs-chinese/_images/export.png" /></p>
<h4>使用</h4>
<h6>Note:如果想要导出 Excel 数据, 需要安装 xlwt.</h6>
<p>默认情况下, xadmin 会提供 Excel, CSV, XML, json 四种格式的数据导出. 您可以通过设置 OptionClass 的 list_export 属性来指定使用 哪些导出格式 (四种各使用分别用 xls, csv, xml, json 表示), 或是将 list_export 设置为 None 来禁用数据导出功能. 示例如下:</p>
<div class="highlight"><pre><span class="n">class</span> <span class="n">MyModelAdmin</span><span class="p">(</span><span class="n">object</span><span class="p">)</span><span class="o">:</span>
<span class="n">list_export</span> <span class="o">=</span> <span class="p">(</span><span class="err">'</span><span class="n">xls</span><span class="err">'</span><span class="p">,</span> <span class="n">xml</span><span class="err">'</span><span class="p">,</span> <span class="err">'</span><span class="n">json</span><span class="err">'</span><span class="p">)</span>
</pre></div>
<h4>我的效果图:不知怎么也没弄出图表。。。。。<a href="https://github.com/tulpar008/testing_Xadmin/tree/master">我的代码在此</a></h4>
<p><img alt="数据导出" src="http://tulparblog.qiniudn.com/xadmin2%E6%95%B0%E6%8D%AE%E5%AF%BC%E5%87%BA.png" /></p>
<h3>5. 列表定时刷新</h3>
<h4>功能</h4>
<p>该插件在数据列表页面提供了定时刷新功能, 对于需要实时刷新列表页面查看即时数据的情况非常有用.</p>
<h4>截图</h4>
<p><img alt="列表刷新" src="http://xadmin.readthedocs.org/en/docs-chinese/_images/refresh.png" /></p>
<h4>使用</h4>
<p>使用数据刷新插件非常简单, 设置 OptionClass 的 refresh_times 属性即可. refresh_times 属性是存有刷新时间的数组. xadmin 默认不开启该插件. 示例如下:</p>
<div class="highlight"><pre><span class="n">class</span> <span class="n">MyModelAdmin</span><span class="p">(</span><span class="n">object</span><span class="p">)</span><span class="o">:</span>
<span class="err">#</span> <span class="err">这会显示一个下拉列表</span><span class="p">,</span> <span class="err">用户可以选择</span><span class="mi">3</span><span class="err">秒或</span><span class="mi">5</span><span class="err">秒刷新一次页面</span><span class="p">.</span>
<span class="n">refresh_times</span> <span class="o">=</span> <span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span>
</pre></div>
<h4>我的效果图:<a href="https://github.com/tulpar008/testing_Xadmin/tree/master">我的代码在此</a></h4>
<p><img alt="刷新" src="http://tulparblog.qiniudn.com/xadmin2%E5%88%B7%E6%96%B0.png" /></p>
<h3>6. 显示数据详情</h3>
<h4>功能</h4>
<p>该插件可以在列表页中显示相关字段的详细信息, 使用 Ajax 在列表页中显示.</p>
<h4>截图</h4>
<p><img alt="数据详情" src="http://xadmin.readthedocs.org/en/docs-chinese/_images/details.png" /></p>
<h4>使用</h4>
<p>使用该插件主要设置 <code>OptionClass</code> 的 <code>show_detail_fields</code>, <code>show_all_rel_details</code> 两个属性. <code>show_detail_fields</code> 属性设置哪些字段要显示详细信息, <code>show_all_rel_details</code> 属性设置时候自动显示所有关联字段的详细信息, 该属性默认为 <code>True</code>. 示例如下:</p>
<div class="highlight"><pre><span class="n">class</span> <span class="n">MyModelAdmin</span><span class="p">(</span><span class="n">object</span><span class="p">)</span><span class="o">:</span>
<span class="n">show_detail_fields</span> <span class="o">=</span> <span class="p">[</span><span class="err">'</span><span class="n">group</span><span class="err">'</span><span class="p">,</span> <span class="err">'</span><span class="n">father</span><span class="err">'</span><span class="p">,</span> <span class="p">...]</span>
</pre></div>
<h4>每弄出来啊</h4>
<h3>7. 数据即时编辑</h3>
<h4>功能</h4>
<p>该插件可以在列表页中即时编辑某字段的值, 使用 Ajax 技术, 无需提交或刷新页面即可完成数据的修改, 对于需要频繁修改的字段(如: 状态)相当有用.</p>
<h4>截图</h4>
<p><img alt="即时编辑" src="http://xadmin.readthedocs.org/en/docs-chinese/_images/editable.png" /></p>
<h4>使用</h4>
<p>使用该插件主要设置 OptionClass 的 list_editable 属性. list_editable 属性设置哪些字段需要即时修改功能. 示例如下:</p>
<div class="highlight"><pre><span class="n">class</span> <span class="n">MyModelAdmin</span><span class="p">(</span><span class="n">object</span><span class="p">)</span><span class="o">:</span>
<span class="n">list_editable</span> <span class="o">=</span> <span class="p">[</span><span class="err">'</span><span class="n">price</span><span class="err">'</span><span class="p">,</span> <span class="err">'</span><span class="n">status</span><span class="err">'</span><span class="p">,</span> <span class="p">...]</span>
</pre></div>
<h4>我的效果图</h4>
<p><img alt="即时编辑" src="http://tulparblog.qiniudn.com/xadmin2%E5%8D%B3%E6%97%B6%E7%BC%96%E8%BE%91.png" /></p>
<h3>8.改主题的插件</h3>
<p>在<code>adminx.py</code>中加入下面代码: </p>
<div class="highlight"><pre><span class="n">from</span> <span class="n">xadmin</span> <span class="n">import</span> <span class="n">views</span>
<span class="n">class</span> <span class="n">BaseSetting</span><span class="p">(</span><span class="n">object</span><span class="p">)</span><span class="o">:</span>
<span class="n">enable_themes</span> <span class="o">=</span> <span class="n">True</span>
<span class="n">use_bootswatch</span> <span class="o">=</span> <span class="n">True</span>
<span class="n">xadmin</span><span class="p">.</span><span class="n">site</span><span class="p">.</span><span class="k">register</span><span class="p">(</span><span class="n">views</span><span class="p">.</span><span class="n">BaseAdminView</span><span class="p">,</span><span class="n">BaseSetting</span><span class="p">)</span>
</pre></div></div>
<footer>
<p class="meta">
<span class="byline author vcard">
Posted by <span class="fn">tulpar</span>
</span>
<time datetime="2014-06-13T00:00:00+08:00" pubdate>Fri 13 June 2014</time> <span class="categories">
<a class="category" href="/tag/xadmin.html">Xadmin</a>
</span>
</p><div class="sharing">
</div> </footer>
</article>
<!-- Duoshuo Comment BEGIN -->
<div class="ds-thread"></div>
<script type="text/javascript">
var duoshuoQuery = {short_name:"tlbog"};
(function() {
var ds = document.createElement('script');
ds.type = 'text/javascript';ds.async = true;
ds.src = 'http://static.duoshuo.com/embed.js';
ds.charset = 'UTF-8';
(document.getElementsByTagName('head')[0]
|| document.getElementsByTagName('body')[0]).appendChild(ds);
})();
</script>
<!-- Duoshuo Comment END -->
</div>
<aside class="sidebar">
<section>
<h1>Recent Posts</h1>
<ul id="recent_posts">
<li class="post">
<a href="/xie-bo-ke-jiao-ben.html">写博客脚本</a>
</li>
<li class="post">
<a href="/gong-zuo-shi-de-sui-bi.html">工作时的随笔</a>
</li>
<li class="post">
<a href="/ce-shi-wen-zhang.html">测试文章</a>
</li>
<li class="post">
<a href="/djangokai-qi-the-sites-framework.html">Django开启 the sites framework</a>
</li>
<li class="post">
<a href="/django-17shi-yong.html">Django 1.7试用</a>
</li>
</ul>
</section>
<section>
<h1>Categories</h1>
<ul id="recent_posts">
<li><a href="/category/it.html">It</a></li>
<li><a href="/category/life.html">Life</a></li>
</ul>
</section>
<section>
<h1>Tags</h1>
<a href="/tag/mysql.html">Mysql</a>, <a href="/tag/tmux.html">Tmux</a>, <a href="/tag/fan-qiang.html">翻墙</a>, <a href="/tag/linux.html">Linux</a>, <a href="/tag/edx.html">Edx</a>, <a href="/tag/virtualbox.html">VirtualBox</a>, <a href="/tag/wo-ai-wo-jia.html">我爱我家</a>, <a href="/tag/userena.html">userena</a>, <a href="/tag/xadmin.html">Xadmin</a>, <a href="/tag/shell.html">Shell</a>, <a href="/tag/python.html">Python</a>, <a href="/tag/djangopython.html">Django,python</a>, <a href="/tag/ssh.html">ssh</a>, <a href="/tag/ubuntu.html">Ubuntu</a>, <a href="/tag/git.html">Git</a>, <a href="/tag/ce-shi.html">测试</a>, <a href="/tag/ueditor.html">Ueditor</a>, <a href="/tag/github.html">Github</a>, <a href="/tag/socketio.html">Socket.io</a>, <a href="/tag/django.html">Django</a>, <a href="/tag/du-shu.html">读书</a>, <a href="/tag/bo-ke.html">博客</a>, <a href="/tag/ngrok.html">ngrok</a> </section>
<section>
<h1>Social</h1>
<ul>
<li><a href="http://izda.com" target="_blank">ئىزدە</a></li>
<li><a href="http://www.google.com" target="_blank">Google</a></li>
<li><a href="http://www.zhihu.com/" target="_blank">知乎</a></li>
<li><a href="http://www.douban.com/" target="_blank">豆瓣</a></li>
</ul>
</section>
<section>
<h1>Blogroll</h1>
<ul>
<li><a href="https://github.com/tulpar008" target="_blank">My Github</a></li>
<li><a href="#" target="_blank">[email protected]</a></li>
</ul>
</section>
</aside> </div>
</div>
<footer role="contentinfo"><p>
Copyright © 2013-2015 - tulpar -
<span class="credit">Powered by <a href="http://getpelican.com">Pelican</a></span>
</p></footer>
</body>
</html>