mirror of
https://github.com/fastapi-users/fastapi-users.git
synced 2026-03-13 07:49:55 +08:00
Automated deployment: Thu Feb 13 14:27:59 UTC 2020 0b68bd5f5d
This commit is contained in:
@@ -34,7 +34,7 @@
|
||||
<meta name="lang:search.tokenizer" content="[\s\-]+">
|
||||
|
||||
<link rel="shortcut icon" href="../../../favicon.png">
|
||||
<meta name="generator" content="mkdocs-1.0.4, mkdocs-material-4.6.0">
|
||||
<meta name="generator" content="mkdocs-1.0.4, mkdocs-material-4.6.2">
|
||||
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../../assets/stylesheets/application.1b62728e.css">
|
||||
<link rel="stylesheet" href="../../../assets/stylesheets/application.adb8469c.css">
|
||||
|
||||
<link rel="stylesheet" href="../../../assets/stylesheets/application-palette.a8b3c06d.css">
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
|
||||
|
||||
|
||||
<script src="../../../assets/javascripts/modernizr.268332fc.js"></script>
|
||||
<script src="../../../assets/javascripts/modernizr.86422ebf.js"></script>
|
||||
|
||||
|
||||
|
||||
@@ -87,7 +87,7 @@
|
||||
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
|
||||
<label class="md-overlay" data-md-component="overlay" for="__drawer"></label>
|
||||
|
||||
<a href="#sqlalchemy" tabindex="1" class="md-skip">
|
||||
<a href="#sqlalchemy" tabindex="0" class="md-skip">
|
||||
Skip to content
|
||||
</a>
|
||||
|
||||
@@ -96,7 +96,7 @@
|
||||
<nav class="md-header-nav md-grid">
|
||||
<div class="md-flex">
|
||||
<div class="md-flex__cell md-flex__cell--shrink">
|
||||
<a href="../../.." title="FastAPI Users" class="md-header-nav__button md-logo">
|
||||
<a href="../../.." title="FastAPI Users" aria-label="FastAPI Users" class="md-header-nav__button md-logo">
|
||||
|
||||
<i class="md-icon">supervisor_account</i>
|
||||
|
||||
@@ -127,7 +127,7 @@
|
||||
<label class="md-search__overlay" for="__search"></label>
|
||||
<div class="md-search__inner" role="search">
|
||||
<form class="md-search__form" name="search">
|
||||
<input type="text" class="md-search__input" name="query" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="query" data-md-state="active">
|
||||
<input type="text" class="md-search__input" aria-label="search" name="query" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="query" data-md-state="active">
|
||||
<label class="md-icon md-search__icon" for="__search"></label>
|
||||
<button type="reset" class="md-icon md-search__icon" data-md-component="reset" tabindex="-1">
|
||||

|
||||
@@ -642,19 +642,19 @@
|
||||
<p><strong>FastAPI Users</strong> provides the necessary tools to work with SQL databases thanks to <a href="https://docs.sqlalchemy.org/en/13/core/">SQLAlchemy Core</a> and <a href="https://www.encode.io/databases/">encode/databases</a> package for full async support.</p>
|
||||
<h2 id="installation">Installation<a class="headerlink" href="#installation" title="Permanent link">¶</a></h2>
|
||||
<p>Install the database driver that corresponds to your DBMS:</p>
|
||||
<div class="codehilite"><pre><span></span>pip install databases<span class="o">[</span>postgresql<span class="o">]</span>
|
||||
</pre></div>
|
||||
<div class="codehilite"><pre><span></span><code>pip install databases<span class="o">[</span>postgresql<span class="o">]</span>
|
||||
</code></pre></div>
|
||||
|
||||
<div class="codehilite"><pre><span></span>pip install databases<span class="o">[</span>mysql<span class="o">]</span>
|
||||
</pre></div>
|
||||
<div class="codehilite"><pre><span></span><code>pip install databases<span class="o">[</span>mysql<span class="o">]</span>
|
||||
</code></pre></div>
|
||||
|
||||
<div class="codehilite"><pre><span></span>pip install databases<span class="o">[</span>sqlite<span class="o">]</span>
|
||||
</pre></div>
|
||||
<div class="codehilite"><pre><span></span><code>pip install databases<span class="o">[</span>sqlite<span class="o">]</span>
|
||||
</code></pre></div>
|
||||
|
||||
<p>For the sake of this tutorial from now on, we'll use a simple SQLite databse.</p>
|
||||
<h2 id="setup-user-table">Setup User table<a class="headerlink" href="#setup-user-table" title="Permanent link">¶</a></h2>
|
||||
<p>Let's create a <code>metadata</code> object and declare our User table.</p>
|
||||
<div class="codehilite"><pre><span></span><span class="kn">import</span> <span class="nn">databases</span>
|
||||
<div class="codehilite"><pre><span></span><code><span class="kn">import</span> <span class="nn">databases</span>
|
||||
<span class="kn">import</span> <span class="nn">sqlalchemy</span>
|
||||
<span class="kn">from</span> <span class="nn">fastapi</span> <span class="kn">import</span> <span class="n">FastAPI</span>
|
||||
<span class="kn">from</span> <span class="nn">fastapi_users</span> <span class="kn">import</span> <span class="n">models</span>
|
||||
@@ -709,12 +709,12 @@
|
||||
<span class="nd">@app</span><span class="o">.</span><span class="n">on_event</span><span class="p">(</span><span class="s2">"shutdown"</span><span class="p">)</span>
|
||||
<span class="k">async</span> <span class="k">def</span> <span class="nf">shutdown</span><span class="p">():</span>
|
||||
<span class="k">await</span> <span class="n">database</span><span class="o">.</span><span class="n">disconnect</span><span class="p">()</span>
|
||||
</pre></div>
|
||||
</code></pre></div>
|
||||
|
||||
<p>As you can see, <strong>FastAPI Users</strong> provides a mixin that will include base fields for our User table. You can of course add you own fields there to fit to your needs!</p>
|
||||
<h2 id="create-the-tables">Create the tables<a class="headerlink" href="#create-the-tables" title="Permanent link">¶</a></h2>
|
||||
<p>We'll now create an SQLAlchemy enigne and ask it to create all the defined tables.</p>
|
||||
<div class="codehilite"><pre><span></span><span class="kn">import</span> <span class="nn">databases</span>
|
||||
<div class="codehilite"><pre><span></span><code><span class="kn">import</span> <span class="nn">databases</span>
|
||||
<span class="kn">import</span> <span class="nn">sqlalchemy</span>
|
||||
<span class="kn">from</span> <span class="nn">fastapi</span> <span class="kn">import</span> <span class="n">FastAPI</span>
|
||||
<span class="kn">from</span> <span class="nn">fastapi_users</span> <span class="kn">import</span> <span class="n">models</span>
|
||||
@@ -769,7 +769,7 @@
|
||||
<span class="nd">@app</span><span class="o">.</span><span class="n">on_event</span><span class="p">(</span><span class="s2">"shutdown"</span><span class="p">)</span>
|
||||
<span class="k">async</span> <span class="k">def</span> <span class="nf">shutdown</span><span class="p">():</span>
|
||||
<span class="k">await</span> <span class="n">database</span><span class="o">.</span><span class="n">disconnect</span><span class="p">()</span>
|
||||
</pre></div>
|
||||
</code></pre></div>
|
||||
|
||||
<div class="admonition tip">
|
||||
<p class="admonition-title">Tip</p>
|
||||
@@ -777,7 +777,7 @@
|
||||
</div>
|
||||
<h2 id="create-the-database-adapter">Create the database adapter<a class="headerlink" href="#create-the-database-adapter" title="Permanent link">¶</a></h2>
|
||||
<p>The database adapter of <strong>FastAPI Users</strong> makes the link between your database configuration and the users logic. Create it like this.</p>
|
||||
<div class="codehilite"><pre><span></span><span class="kn">import</span> <span class="nn">databases</span>
|
||||
<div class="codehilite"><pre><span></span><code><span class="kn">import</span> <span class="nn">databases</span>
|
||||
<span class="kn">import</span> <span class="nn">sqlalchemy</span>
|
||||
<span class="kn">from</span> <span class="nn">fastapi</span> <span class="kn">import</span> <span class="n">FastAPI</span>
|
||||
<span class="kn">from</span> <span class="nn">fastapi_users</span> <span class="kn">import</span> <span class="n">models</span>
|
||||
@@ -832,7 +832,7 @@
|
||||
<span class="nd">@app</span><span class="o">.</span><span class="n">on_event</span><span class="p">(</span><span class="s2">"shutdown"</span><span class="p">)</span>
|
||||
<span class="k">async</span> <span class="k">def</span> <span class="nf">shutdown</span><span class="p">():</span>
|
||||
<span class="k">await</span> <span class="n">database</span><span class="o">.</span><span class="n">disconnect</span><span class="p">()</span>
|
||||
</pre></div>
|
||||
</code></pre></div>
|
||||
|
||||
<p>Notice that we pass it three things:</p>
|
||||
<ul>
|
||||
@@ -902,9 +902,9 @@
|
||||
<div class="md-footer-copyright">
|
||||
|
||||
powered by
|
||||
<a href="https://www.mkdocs.org">MkDocs</a>
|
||||
<a href="https://www.mkdocs.org" target="_blank" rel="noopener">MkDocs</a>
|
||||
and
|
||||
<a href="https://squidfunk.github.io/mkdocs-material/">
|
||||
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
|
||||
Material for MkDocs</a>
|
||||
</div>
|
||||
|
||||
@@ -914,7 +914,7 @@
|
||||
|
||||
</div>
|
||||
|
||||
<script src="../../../assets/javascripts/application.808e90bb.js"></script>
|
||||
<script src="../../../assets/javascripts/application.c33a9706.js"></script>
|
||||
|
||||
<script>app.initialize({version:"1.0.4",url:{base:"../../.."}})</script>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user