Django (1.2.3) CRUD Using Generic Views

Django CRUD using Generic Views for Django 1.2.3
An adaptation after the How to use generic views in Django
Please visit Django project website for more information: DJANGO
A Django site.
MODELS (models.py)
from django.db import models
from django.forms import ModelForm
import datetime
# Create your models here.
class Task(models.Model):
priority = models.CharField(max_length=100)
task = models.CharField(max_length=500)
description = models.CharField(max_length=1000)
owner = models.CharField(max_length=100)
status = models.CharField(max_length=100)
entry_date = models.DateTimeField(editable=False)
def __unicode__(self):
return self.task
def save(self):
self.entry_date = datetime.datetime.now()
super(Task, self).save()

@models.permalink
def get_absolute_url(self):
return ('task-display', (), {'object_id': self.id})

class TaskForm(ModelForm):
class Meta:
model = Task

URls (urls.py)
from django.conf.urls.defaults import *
from django.views.generic import list_detail, create_update
from crud.models import Task, TaskForm

task_info = {
"queryset" : Task.objects.all(),
'template_name': 'crud/index.html',
}

task_form = {
'form_class': TaskForm,
'template_name': 'crud/add.html',
}

task_delete = {
'model': Task,
'post_delete_redirect': '../..',
'template_name': 'crud/delete_confirm_task.html',
}

urlpatterns = patterns('',
(r'^$', list_detail.object_list, task_info, 'task-displaytop'),
(r'^(?P<object_id>\d+)/$', list_detail.object_detail, task_info, 'task-display'),
(r'(?P<object_id>\d+)/modify/$', create_update.update_object, task_form, 'task-modify'),
(r'^add/$', create_update.create_object, task_form, 'task-add'),
(r'^(?P<object_id>\d+)/delete/$', create_update.delete_object, task_delete, "task-delete"),
)
TEMPLATES (index.html)
    {% if object %}
        <h2>Task Details</h2>
        <ul>
              <li>ID: {{ object.id }}</li>
              <li>Description: {{ object.description }}</li>
              <li>Task text:
            {{ object.task }}
              </li>
        </ul>
    ( <a href="{% url task-modify object.id %}">modify</a> |
      <a href="{% url task-delete object.id %}">delete</a> )
    {% else %}
           <h2>List of all Tasks</h2>
        {% if object_list %}
              <ul>
                {% for task in object_list %}
                  <li>{{ task.description }} ( <a href="{% url task-display task.id %}">details</a> |<a href="{% url task-modify task.id %}">modify</a> |<a href="{% url task-delete task.id %}">delete</a> )</li>
                {% endfor %}
              </ul>
        {% else %}
              No rules defined yet.
        {% endif %}
          <h3><a href="{% url task-add %}">Add new task</a></h3>
    {% endif %}

TEMPLATES (add.html)
<h2>Add Tasks</h2>
<form action="." method="POST">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Add" /></form>


TEMPLATES (delete_confirm_task.html)
<h2>Delete Tasks</h2>
<form action="." method="POST">
{% csrf_token %}
Are you sure?
<input type="submit" /></form>

Please let me know if you have any problems trying to implement something similar.

Comments

  1. No, but I got problems trying to read 14px Impact.

    ReplyDelete
  2. Changed the font to Courier. I hope this is better, Jim :)

    ReplyDelete

Post a Comment

Popular posts from this blog

Ant Example: Check if a directory is empty or if specific file exists.

Creating a Custom WebSphere Portal 8 Theme with the Eclipse IDE