django-groundwork

本文也是看了网络上的一些django文章后弄出,加上自己个人的一点心得和想法。

django-groundwork可以为一个app里面的model的添加 增删 的功能,以下是在django1.7的版本下部署,网络上也有一些是一些过去1.4之类的部署。

django1.7的部署,在github上下载后,把该文件夹放在项目下,和app,manage.py同级。然后在setting.py上的INSTALLED_APPS添加进去,很简单。

之后可以python manage.py help查看是否加入了新的命令 groundwork。

确定后运行python manage.py app modelname 

其中modelname 就是你在app里面的需要添加功能的models名字。

运行命令后输出Y确定执行。会在app里面生成新的views,urls,forms文件,template会生成界面。

url.py里面会显示错误,记得加入from django.conf.urls import patterns。

app/urls.py

from django.conf.urls import patterns
from models import *
from views import *

urlpatterns = patterns('',

    (r'product/create/$', create_product),
    (r'product/list/$', list_product ),
    (r'product/edit/(?P<id>[^/]+)/$', edit_product),
    (r'product/view/(?P<id>[^/]+)/$', view_product),
    
)

最后两个url的里面后部分是正则表达式,意思是会接受id的,他会get来自网页的参数,参数会赋给id,之后会传递给views里面的对应的def,经过对应的函数后return回去给网页。

在setting.py的文件夹里面的url可以在里面加入app文件夹的url。

记得在setting里面加入

TEMPLATE_DIRS = (

    'templates',

)

不然会显示读取不到template。

from django.conf.urls import patterns, include, url
from django.contrib import admin

urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'depot.views.home', name='home'),
    # url(r'^blog/', include('blog.urls')),

    url(r'^admin/', include(admin.site.urls)),
    url(r'^prodect/',include('depotapp.urls')),
)

app/views.py

def create_product(request):
    form = ProductForm(request.POST or None)
    if form.is_valid():
        form.save()
        form = ProductForm()

    t = get_template('depotapp/create_product.html')
    c = RequestContext(request,locals())
    return HttpResponse(t.render(c))



def list_product(request):
  
    list_items = Product.objects.all()
    paginator = Paginator(list_items ,10)


    try:
        page = int(request.GET.get('page', '1'))
    except ValueError:
        page = 1

    try:
        list_items = paginator.page(page)
    except :
        list_items = paginator.page(paginator.num_pages)

    t = get_template('depotapp/list_product.html')
    c = RequestContext(request,locals())
    return HttpResponse(t.render(c))



def view_product(request, id):
    product_instance = Product.objects.get(id = id)

    t=get_template('depotapp/view_product.html')
    c=RequestContext(request,locals())
    return HttpResponse(t.render(c))

def edit_product(request, id):

    product_instance = Product.objects.get(id=id)

    form = ProductForm(request.POST or None, instance = product_instance)

    if form.is_valid():
        form.save()

    t=get_template('depotapp/edit_product.html')
    c=RequestContext(request,locals())
    return HttpResponse(t.render(c))

app/forms.py

class ProductForm(forms.ModelForm):
	
    class Meta:
        model = Product	
        # exclude = [] # uncomment this line and specify any field to exclude it from the form

    def __init__(self, *args, **kwargs):
        super(ProductForm, self).__init__(*args, **kwargs)

django-groundwork帮我们生成这么多打码,逻辑不难看懂,我是一个django入门级别的,可以学到很多。

你可能感兴趣的:(django-groundwork)