Skip to content

Instantly share code, notes, and snippets.

@amitittyerah
Created April 25, 2014 05:17
Show Gist options
  • Save amitittyerah/11278318 to your computer and use it in GitHub Desktop.
Save amitittyerah/11278318 to your computer and use it in GitHub Desktop.
Django CRUD example
# urls.py
urlpatterns += patterns('',
url(r'^platform$', views.platform_list, name='platform_list'),
url(r'^platform/new$', views.platform_create, name='platform_new'),
url(r'^platform/edit/(?P<pk>\d+)$', views.platform_update, name='platform_edit'),
url(r'^platform/delete/(?P<pk>\d+)$', views.platform_delete, name='platform_delete'),
)
# views.py
@logged_in
def platform_list(request, template_name='platforms/platform_list.html'):
platforms = Platform.objects.all()
data = {}
data['object_list'] = platforms
return render(request, template_name, data)
@logged_in
def platform_create(request, template_name='platforms/platform_form.html'):
if request.method == 'POST':
form = PlatformForm(request.POST, request.FILES)
if form.is_valid():
form.save()
return redirect('platform_list')
else:
form = PlatformForm(None)
return render(request, template_name, {'form':form})
@logged_in
def platform_update(request, pk, template_name='platforms/platform_form.html'):
platform = get_object_or_404(Platform, pk=pk)
if request.method == 'POST':
form = PlatformForm(request.POST, request.FILES, instance=platform)
if form.is_valid():
form.save()
return redirect('platform_list')
else:
form = PlatformForm(None, instance=platform)
return render(request, template_name, {'form':form})
@logged_in
def platform_delete(request, pk, template_name='platforms/platform_delete.html'):
platform = get_object_or_404(Platform, pk=pk)
if request.method=='POST':
platform.delete()
return redirect('platform_list')
return render(request, template_name, {'object':platform})
# forms
class PlatformForm(forms.ModelForm):
class Meta:
model = Platform
# platforms/platform_form.html
{% extends 'userbase.html' %}
{% block innercontent %}
<h1>Platform</h1>
<form method="post" enctype="multipart/form-data">
<table>
{{ form.as_table }}
</table>
<input type="submit" value="Submit" class="button save-button" />
</form>
{% endblock %}
# platforms/platform_delete.html
{% extends 'userbase.html' %}
{% block innercontent %}
<h1>Platform</h1>
<form method="post">
Are you sure you want to delete "{{ object }}" ?
<input type="submit" value="Submit" class="button delete-button" />
</form>
{% endblock %}
# platforms/platform_list.html
{% extends 'userbase.html' %}
{% block innercontent %}
<h1>Platforms</h1>
<a href="{% url "platform_new" %}" class="button new-button">New</a>
<table class="list">
<tr>
<td>
Icon
</td>
<td>
Platform Name
</td>
<td>
Number of games
</td>
<td>
</td>
</tr>
{% for platform in object_list %}
<tr>
<td>
<img src="{{ platform.get_icon }}" height="60" width="40">
</td>
<td>
<a href="{% url "platform_edit" platform.id %}">
{{ platform.name }}
</a>
</td>
<td>
{{ platform.get_no_games }}
</td>
<td>
<a href="{% url "platform_delete" platform.id %}" class="button delete-button">Delete</a>
</td>
</tr>
{% endfor %}
</table>
{% endblock %}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment