Skip to content
A few elixir libraries for working with django
Elixir
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
config
lib
test
.gitignore
.travis.yml
LICENSE
README.md
mix.exs
mix.lock

README.md

ExDjango

Travis Hex.pm Hex.pm

An elixir library for working with django

Warning: This is Alpha software and subject to breaking changes.

Features

  • Django cookie-based sessions
  • Django redis cache sessions
  • Django pbkdf2_sha256 passwords

Installation

Add ex_django to your mix.exs dependencies other dependencies are optional depending on what features you want to use.

defp deps do
[ {:exdjango, "~> 0.3.1"} ]
end

If you need sessions you need to add poison

{:poison, "~> 1.5.0"},

If you need to read/write django passwords you need to add comeonin

{:comeonin, "~> 1.6"},

Django sessions

Add secret_key to config.exs and add either Cookie or Redis to endpoint.ex Plug config

# config.exs  
config :exdjango, :config,
  secret_key: "django-secret-key"

# endpoint.ex  
plug Plug.Session,
  store: ExDjango.Session.Cookie,
  key: "sessionid"

or

# config.exs  
config :exdjango, :config,
  secret_key: "django-secret-key"
  redis_pool: MyApp.RedixPool

# endpoint.ex  
plug Plug.Session,
  store: ExDjango.Session.Redis,
  key: "sessionid"

To use Redis session you need a redis connection pool see https://github.com/whatyouhide/redix for more information.

Set user / get user_id ("_auth_user_id" from django session)

conn
 |> ExDjango.Session.put_user(user)

conn
 |> ExDjango.Session.get_user_id()

Django passwords

ExDjango.Pbkdf2.checkpw(password, user.password)

changeset
|> put_change(:password, ExDjango.Pbkdf2.hashpwsalt(changeset.params["plaintext_password"]))
|> repo.insert()
Something went wrong with that request. Please try again.