Home

Awesome

ExDjango

Travis Hex.pm Hex.pm

An elixir library for working with django

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

Features

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.4.0"} ]
end

If you need sessions you need to add poison

{:poison, "~> 3.0"},

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

{:comeonin, "~> 3.0"},

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()