Jacek Bzdak
The Web framework for perfectionists
with deadlines
- django-project.org
def show_all(request): return render_to_response(
"medic/kartoteka_list.html",
context_instance = RequestContext(request,
dict = {'historie_items' :models.MedicRecord.objects.all()}))
from django.conf.urls.defaults import *
from django.conf import settings
from views import *
urlpatterns = patterns('',
url(r'^index$', show_all , name = 'medic_index')
...
)
def pacjent(request, patientid): patient = get_object_or_404(
Patient, pk = patientid) ctx_dict = {'pacjent' : patient} template = 'medic/pacjent.html' if request.method == 'GET': form = forms.KartotekaForm(
initial={'scout_id' : patient.id})
(...)else: form = forms.KartotekaForm(
data = request.POST) if form.is_valid(): record = form.save() messages.success(request, u'Zapisano!')
return render_to_response(template, context_instance = RequestContext(request, dict = ctx_dict))
def pacjent_add(request):
if request.method == 'GET':
form = forms.PacjentForm(initial={... })
else:
form = forms.PacjentForm(request.POST)
if form.is_valid():
patient = form.save()
return redirect('pacjent_wizyty',
kwargs={'patientid' : patient.id}))
return render_to_response('...',
context_instance =
RequestContext(request, {'form' : form}))
if request.method == "GET":
do_something()
form = SomeForm()
if request.method == "POST":
form = SomeForm(request.POST)
if form.is_valid():
form.save()
do_something_else()
return redirect("somewhere")
return render_to_response("some_template", ctx=...)
@login_required
def my_view():
if request.method == "GET":
do_something()
form = SomeForm(initial=...)
if request.method == "POST":
form = SomeForm(request.POST, ...)
if form.is_valid():
form.save()
do_something_else()
return redirect ("somewhere")
return render_to_response("some_template", ctx=...)
def pacjent_add(request): if request.method == 'GET': form = forms.PacjentForm() else: form = forms.PacjentForm(request.POST) if form.is_valid(): patient = form.save() return HttpResponseRedirect(...)return render_to_response(..., ctx=...)
class ShowAll(View):
http_method_names = ['get']
def get(self):
return render_to_response(
"medic/kartoteka_list.html",
context_instance = RequestContext(
self.request,
dict = {'historie_items' : ...}))
from django.conf.urls.defaults import * from django.conf import settings from views import * urlpatterns = patterns('', url(r'^index$', ShowAll.as_view(), name = 'medic_index') ... )
def as_view(cls, **initkwargs):
(...)
def view(request, *args, **kwargs):
self = cls(**initkwargs)
self.request = request
self.args = args
self.kwargs = kwargs
return self.dispatch(
request, *args, **kwargs)
(...)
return view
class ShowAll(View):
http_method_names = ['get']
def get(self):
return render_to_response(
"medic/kartoteka_list.html",
context_instance = RequestContext(
self.request,
dict = {'historie_items' : ...}))
class ShowAll(TemplateView): http_method_names = ['get'] template_name = "medic/kartoteka_list.html"def get_context_data(self, **kwargs): args = super().get_context_data(**kwargs) args['historie_items'] = ...return args
class TemplateView(TemplateResponseMixin,
ContextMixin, View):
def get(self, request, *args, **kwargs):
context = self.get_context_data(**kwargs)
return self.render_to_response(context)

class A(object):
def __init__(self):
super(A, self).__init__()
def foo(self): pass
class C(A):
def __init__(self):
super(C, self).__init__()
print "MRO:", [x.__name__ for x in E.__mro__]
['C', 'A', 'object']
c = C()
c.foo()
c.__getattr__("a") class A(object):
def __init__(self):
print "A"
super(A, self).__init__()
print "A post"
class B(A):
def __init__(self):
print "B"
super(B, self).__init__()
print "B post"
class C(A):
def __init__(self):
print "C"
super(C, self).__init__()
print "C post"
class D(B, C):
def __init__(self):
print "D"
super(D, self).__init__()
print "D post"
>>> d = D()D B C A A post C post B post D post
>>> [print(c.__name__) for c in CreateView.mro()]
CreateView
SingleObjectTemplateResponseMixin
TemplateResponseMixin
BaseCreateView
ModelFormMixin
FormMixin
SingleObjectMixin
ContextMixin
ProcessFormView
View
object
@login_required
def edit_dynamic_form(request, dynamic_form_id):
dynamic_form = get_object_or_404(
DynamicForm, pk=dynamic_form_id)
return render_to_response(
"dynamic_forms/dynamic_form_edit.html",
{"dynamic_form": dynamic_form},
context_instance=RequestContext(request))
class EditDynamicForm(
LoginRequiredMixin, DetailView):
http_method_names = ['get']
pk_url_kwarg = 'dynamic_form_id'
model = DynamicForm
template_name = "dynamic_forms/dynamic_form_edit.html"
context_object_name="dynamic_form"
@login_required
def add_dynamic_form_field(request,
dynamic_form_id):
dynamic_form = get_object_or_404(
DynamicForm, pk=dynamic_form_id)
if request.method == 'POST':
form = AddDynamicFormField(request.POST)
if form.is_valid():
field = form.save(commit=False)
field.form = dynamic_form
field.save()
return reverse(...)
... else: form = AddDynamicFormField() dynamic_form_form =BaseDynamicForm(dynamic_form) return render_to_response("", {"form": form, "dynamic_form": dynamic_form, "dynamic_form_form": dynamic_form_form}, context_instance=RequestContext(request))
class ProcessFormView(View):
def get(self, request, *args, **kwargs):
form_class = self.get_form_class()
form = self.get_form(form_class)
return self.render_to_response(
self.get_context_data(form=form))
def post(self, request, *args, **kwargs):
form_class = self.get_form_class()
form = self.get_form(form_class)
if form.is_valid():
return self.form_valid(form)
else:
return self.form_invalid(form)
class AddDynamicFormFieldView(
LoginRequiredMixin, CreateView):
template_name = "..."
form_class = AddDynamicFormField
def dispatch(self, request, *args, **kwargs):
self.dynamic_form = get_object_or_404(...)
return super().dispatch(...)
def get_context_data(self, **kwargs):
kwargs.update({
'dynamic_form': self.dynamic_form,
'dynamic_form_form':
BaseDynamicForm(self.dynamic_form)
})
return kwargs
def get_success_url(self):
return reverse('...',
kwargs= {
"dynamic_form_id":
self.dynamic_form.id})
def form_valid(self, form):
field = form.save(commit=False)
try:
self.dynamic_form.add_field_to_form(field)
field.save()
except FieldNameNotUnique:
return self.form_invalid(form)
return super().form_valid(form)
@login_required
def participants_list(request, dynamic_form_id):
dynamic_form = get_object_or_404(DynamicForm,
pk=dynamic_form_id)
participants =DynamicFormData.objects.all()
.filter(form=dynamic_form)
return render_to_response(
"dynamic_forms/list.html",
{"participants": participants},
context_instance=RequestContext(request))
class ParticipantList(
LoginRequiredMixin, ListView):
http_method_names = ['get']
template_name = "dynamic_forms/list.html"
context_object_name = "participants"
def dispatch(self, request, *args, **kwargs):
self.dynamic_form = get_object_or_404(...)
return super().dispatch(request,
*args, **kwargs)
def get_queryset(self):
return DynamicFormData.objects.filter(
form=self.dynamic_form)