由于自己所用的dango版本是1.5的。所用在阅读教程《django step by step 》时发现很多程序都是不能运行的,以下记录了第七篇(一个通讯录的例子)的修正方法。
- 修改前的address/models.py文件:
#coding=utf-8
from django.db import models
# Create your models here.
class Address(models.Model):
name = models.CharField('姓名', maxlength=6, unique=True)
gender = models.CharField('性别', choices=(('M', '男'), ('F', '女')),
maxlength=1, radio_admin=True)
telphone = models.CharField('电话', maxlength=20)
mobile = models.CharField('手机', maxlength=11)
由于1.3以后的版本不支持radio_admin,所用此处应该要一点改动,更正后的代码:
#coding=utf-8
from django.db import models
from django.contrib import admin
# Create your models here.
class Address(models.Model):
name = models.CharField('姓名',max_length=20,unique=True)
gender = models.CharField('性别',choices=(('M','男'),('F','女')), max_length=1 )
telphone = models.CharField('电话',max_length=20)
mobile = models.CharField('手机', max_length=11)
def __repr__(self):
return self.name
class AddressAdmin(admin.ModelAdmin):
model = Address
radio_fields = {'gender':admin.HORIZONTAL}
admin.site.register(Address , AddressAdmin)
- 修改原app中的urls文件 ,去掉admin 的url配置注释, 代码如下:
# Uncomment the next line to enable the admin:
url(r'^admin/', include(admin.site.urls)),
- 对教程14步,增加address/urls.py做修改,修改前代码如下:
from django.conf.urls.defaults import *
from newtest.address.models import Address
info_dict = {
# 'model': Address,
'queryset': Address.objects.all(),
}
urlpatterns = patterns('',
(r'^/?$', 'django.views.generic.list_detail.object_list', info_dict),
)
由于当前版本的view.generic 取消了list_detail ,代码在1.5版本中不可以允许,更正方法如下:
编辑address/views.py文件,添加如下代码
#coding=utf-8
from django.shortcuts import get_object_or_404
from django.views.generic.list import ListView
from address.models import Address
class AddressList(ListView):
model = Address
#template_name = 'address/address_list.html'
def get_queryset(self):
return Address.objects.all()
在ListView中tempalte_name在不设置的情况下会自动的templates文件夹中寻找这种(对象名_list.html)文件名的文件作为tempalte接着编辑address/urls.py文件,添加如下代码
from django.conf.urls.defaults import *
from address.views import AddressList
from django.views import generic
urlpatterns = patterns('',
url(r'^/?$', AddressList.as_view()),
)
最后再修改原app中的urls文件 在patterns元组中添加如下的代码:
url(r'^address/', include('address.urls')),
- 启动server ,在浏览器中打开http://127.0.0.1:8000/address/,运行效果如下所示: