Privacy Policy
Snippets index

  Upload a file to a Django site using cURL

#!/bin/bash

HOST=http://127.0.0.1:8001
FILEPATH=...

function message {
    printf "\n\x1b[1;33;40m$1 \x1b[0m\n"
}

#
# How to cURL an Authenticated Django App?
# https://stackoverflow.com/questions/21306515/how-to-curl-an-authenticated-django-app#24376188
#

message "Authenticating on $HOST ..."
read -p 'Username: ' USERNAME
read -sp 'Password: ' PASSWORD

LOGIN_URL="${HOST}/api/login_user/"
COOKIES=cookies.txt
message "Login url: ["$LOGIN_URL"]"
echo -n "Django Auth: get csrftoken ..."
CURL_BIN="curl -s --cookie-jar $COOKIES --cookie $COOKIES --referer $LOGIN_URL "
$CURL_BIN $LOGIN_URL > /dev/null
DJANGO_TOKEN="csrfmiddlewaretoken=$(grep csrftoken $COOKIES | sed 's/^.*csrftoken\s*//')"
echo "Django token: [$DJANGO_TOKEN]"
message "Perform login ..."
$CURL_BIN \
    --data "$DJANGO_TOKEN&username=$USERNAME&password=$PASSWORD" \
    --request POST $LOGIN_URL

#
# Upload files with Curl
# https://medium.com/@petehouston/upload-files-with-curl-93064dcccc76
#

message "Upload new release ..."
$CURL_BIN --request POST --show-error \
    -F "param1=value1" \
    -F "param2=value2" \
    -F attachment=@"$FILEPATH;type=application/gzip" \
    "$HOST/api/mymodel/"

echo ""
echo ""
read -n 1 -s -r -p "Press any key to continue"
URL=$HOST/admin/myapp/mymodel/?o=-3
open $URL