« 2011年9月的文章归档

django初体验…

第一次使用django,我也不确定以后会用上它,不过不管什么第一次都是有意义的。。虽然是跟着文档的First steps写的,还是决定记录一下,以记念这一刻。。

model.py:

from django.db import models
import datetime

# Create your models here.
class Poll(models.Model):
    question = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')

    def was_published_today(self):
        return self.pub_date.date() == datetime.datetime.today()
    was_published_today.short_description = 'Published today?'

    def __unicode__(self):
        return self.question

class Choice(models.Model):
    poll = models.ForeignKey(Poll)
    choice = models.CharField(max_length=200)
    votes = models.IntegerField()

    def __unicode__(self):
        return self.choice

view.py

# Create your views here.
#from django.template import Context, loader
#from django.http import HttpResponse, Http404
from django.core.context_processors import csrf
from django.shortcuts import render_to_response,get_object_or_404
from django.http import HttpResponseRedirect
from django.core.urlresolvers import reverse
from mydjango.polls.models import Poll, Choice

def index(request):
    latest_poll_list = Poll.objects.all().order_by('-pub_date')[:5]
    #t = loader.get_template('index.html')
    #c = Context({
    #    'latest_poll_list':latest_poll_list,
    #})
    #return HttpResponse(t.render(c))

    return render_to_response('index.html' ,
        {'latest_poll_list': latest_poll_list})

def detail(request, poll_id):
    #try:
    #    p = Poll.objects.get(pk=poll_id)
    #except Poll.DoesNotExist:
    #    raise Http404
    p = get_object_or_404(Poll, pk=poll_id)
    c = {'poll': p}
    c.update(csrf(request))
    return render_to_response('detail.html', c)

def vote(request, poll_id):
    p = get_object_or_404(Poll, pk=poll_id)

    try:
        selected_choice = p.choice_set.get(pk=request.POST['choice'])
    except (KeyError, Choice.DoesNotExist):
        return render_to_response('detail.html',{
            'poll': p,
            'error_message': "You didn't select a choice.",
        })
    else:
        selected_choice.votes += 1
        selected_choice.save()
        #return HttpResponseRedirect(reverse('mydjango.polls.views.results', args=(p.id,)))
        return HttpResponseRedirect(reverse('poll_results', args=(p.id,)))

def results(request, poll_id):
    p = get_object_or_404(Poll, pk=poll_id)
    return render_to_response('results.html', {'poll':p})

使python支持mysql

今天玩了一下django,在建立数据库连接时候出了点问题,本以为挺简单,没想到一波三折,从夜里12点搞到凌晨2:30…终于弄完,打铁得趁热,虽然很想赶紧睡觉,还是把解决方法记录下来。

首先,如果你的UBUNTU玩家,且你很‘懒’,你没时间的话,请:

apt-get install python-mysqldb

下面的你就不用看,也不用尝试了,你可以利用这大把大把的时间去把妹,利用你的青春去推倒更多的妹纸,去繁衍更多的下一代..去…

如果你认为源码更可控,你觉得有必要和我一样装逼的话,那来吧。。。

1.安装python-dev

sudo apt-get install python-dev

2.安装libmysqlclient-dev

sudo apt-get install libmysqlclient-dev

3.安装setuptools

下载地址:http://pypi.python.org/pypi/setuptools#downloads,选择从源码安装:
tar zxvf setuptools-0.6c11.tar.gz
cd setuptools-0.6c11
python setup.py build
python setup.py install

如果有权限问题,请sudo,下面不再重复这个问题

4.安装MYSQL FOR PYTHON (MYSQLdb):
下载地址:http://sourceforge.net/projects/mysql-python/

tar zxvf MySQL-python-1.2.3.tar.gz
$ cd MySQL-python-1.2.3
$ #如果有必要的话,编辑 site.cfg 其中mysql_config的路径正确,详情可以看README
$ python setup.py build
$ sudo python setup.py install

一切无误的话,可以测试一下了:
$ python
>>>import MYSQLdb

如果你也和我一样杯摧的报这个错的话:
ImportError: libmysqlclient.so.18: cannot open shared object file: No such file or directory

那你要找到你的libmysqlclient.so.18这个文件,建个链接:

ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib/libmysqlclient.so.18

总之。。真TMD累!