Simple reusable package for quick scaffolding and basic views based on a given model.
Project description
QuickView is sort of a class based view on steriods, which handles basic scaffolding and basic views in very few lines of code. Take a look at quickview/__init__.py to look at what to override.
The main job is creating necessary templates. It takes care of creating and adding entries in your urls.py as well.
NB! This is a proof-of-concept-release and has ONLY been tested under Python 3.3 and Django 1.5b2.
Quick start
pip install django-quickview.
Add “quickview” to your INSTALLED_APPS setting like this:
INSTALLED_APPS = ( ... 'quickview', )In your views.py do:
import quickview
- class YourView(quickview.ModelQuickView);
model = YourModel # points to a model in models.py
In your project urls.py do something like this:
import quickview urlpattern += quickview.discover_views()
Run python manage.py syncdb to create any models.
You’ll have to create some templates and put these under yourapp/templates/yourapp/yourmodel or directly in your default templatefolder. The templates are:
index.html : lists all your models.
detail.html : detail view of one specific instance.
add.html : template to add instances.
update.html : template to update instances.
delete.html : template to delete an instance.
Start the development server and visit http://127.0.0.1:8000/yourapp/yourmodel/list/.
Elaboration and motivation
Being somewhat underwhelmed by class based views due to the repetative coding in urls.py etc I tried to see if I could get generic scaffolding and basic views up and running based on a given model in less lines of code. It’s pretty simple and not heavily tested, but I’d like to see if any of you has any inital comments before I spend a lot of time on it.
The idea is that we always write the same views for alot of our models; a list view, a detail view and add/update/delete. My app/urls.py seem to have repeating patterns for all these views. Generic views, class based or plain functions, do help but I still find all the coding a bit redundant. In essence the templates are the only thing that I really have to code manually.
Using quickview you define your model like so :
- class Person(models.Model):
name = models.CharField(max_length=30)
age = models.IntegerField(default=10)
In views.py:
from models import Person
from quickview import *
- class PersonView(ModelQuickView):
model = Person
And in urls.py:
import quickview urlpattern += quickview.discover_views()
After a little syncdb and runserver you’ll have an urlconfig/pattern something like this:
myapp/person/list/$ [name=’myapp-person-list’] myapp/person/add/$ [name=’myapp-person-add’] myapp/person/(?P<pk>d+)/$ [name=’myapp-person-detail’] myapp/person/update/(?P<pk>d+)/$ [name=’myapp-person-update’] myapp/person/delete/(?P<pk>d+)/$ [name=’myapp-person-delete’]
where myapp is the app my person-models resides in. Now you define some templates ( list.html, detail.html, add.html, update.html, delete.html ) in /templates/myapp/person/ and you’re good to go ;-).
Todos: user authentication/login_required etc. and unittests.
Version history
- 0.2 - Refactored code; QuickView is not dependent on a model. A subclass of QuickView named ModelQuickView takes
care of all model related magic. This makes it easier to write non-model based views based on the same concept.
0.1 - Initial release.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file django-quickview-0.2.zip.
File metadata
- Download URL: django-quickview-0.2.zip
- Upload date:
- Size: 10.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
abeebf826453ff63f461836f8633351e937e1933d42daa3835efd2d7452a0e06
|
|
| MD5 |
d04691c5981776bd27a7f97506e07ddc
|
|
| BLAKE2b-256 |
75fb760597094773212b5976a40f3649a2744aa2ec0637e849d91be40280aa3f
|