def submit(request): """ View for submitting a URL to be shortened """ form = LinkSubmitForm(request.POST) if form.is_valid(): kwargs = {'url': form.cleaned_data['url']} custom = form.cleaned_data['custom'] if custom: kwargs.update({'is_custom': True, 'short_url': custom}) link = Link(**kwargs) link.save() return render(request, 'submit_success.html', {'link': link}) else: return render(request, 'submit_failed.html', {'link_form': form})
def create(request): request_json = json.loads(request.body.decode('utf-8')) print(request_json) if 'url' in request_json and len(request_json['url'].strip()) > 0: val = URLValidator() try: long_url = url_normalize(request_json['url'].strip()) val(long_url) existing_link = Link.objects.filter(url=long_url) if existing_link.count() == 0: link = Link(url=long_url, date_created=timezone.now()) link.save() else: link = existing_link[0] return JsonResponse({ 'short_url': request.build_absolute_uri( reverse('shortener:goto', args=[link.short_url()])) }) except ValidationError: return JsonResponse({'error': 'URL is not valid.'}, status=400) else: return JsonResponse({'error': 'No URL given.'}, status=400)