def create(request, template_name=None, next=None): """create new redirection""" if request.method == "POST": form = ShortURLForm(request.POST) if form.is_valid(): mini = form.save() mini.code = encoder.encode_url(mini.id) mini.save() return HttpResponseRedirect(reverse(next)) else: form = ShortURLForm() c = RequestContext(request, { 'form': form, }) return render_to_response(template_name, c)
def create(request, api=False, template_name=None): ## process or display the form based on the request method if request.method == 'POST' or api is True: ## include the remote address int the submitted data data = getattr(request, request.method).copy() data['remote_user'] = request.META['REMOTE_ADDR'] ## validate and process the form form = ShortURLForm(data) if form.is_valid(): form.save(request, api) instance = form.instance ## if page is being accessed as API, return clean data if api is True: response = '' if request.GET.get('canonical') == '1': response = instance.canonical_url if not response: response = instance.get_short_full_url() return _api_response(response, data.get('type')) ## redirect to the preview page return HttpResponseRedirect(instance.get_absolute_url()) ## form is not valid and the page is being accessed as API elif api is True: return _api_response('ERROR: Invalid data.') ## the page was not requested as POST neithe as API else: initial = {'url': request.GET.get('url')} if initial['url'] == 'referer': initial['url'] = request.META.get('HTTP_REFERER') form = ShortURLForm(initial=initial) ## render the form template template_name = template_name or 'base_shorturl_create.html' return render_to_response(template_name, locals(), context_instance=RequestContext(request))