|
16 | 16 | <span class=normal>3</span> |
17 | 17 | <span class=normal>4</span> |
18 | 18 | <span class=normal>5</span> |
19 | | -<span class=normal>6</span></pre></div></td><td class=code><div><pre><span></span><code><span class=kn>from</span> <span class=nn>django.urls</span> <span class=kn>import</span> <span class=n>include</span><span class=p>,</span> <span class=n>path</span> |
| 19 | +<span class=normal>6</span></pre></div></td><td class=code><div><pre><span></span><code><span class=kn>from</span><span class=w> </span><span class=nn>django.urls</span><span class=w> </span><span class=kn>import</span> <span class=n>include</span><span class=p>,</span> <span class=n>path</span> |
20 | 20 |
|
21 | 21 | <span class=n>urlpatterns</span> <span class=o>=</span> <span class=p>[</span> |
22 | 22 | <span class=o>...</span><span class=p>,</span> |
|
40 | 40 | <span class=normal>16</span> |
41 | 41 | <span class=normal>17</span> |
42 | 42 | <span class=normal>18</span> |
43 | | -<span class=normal>19</span></pre></div></td><td class=code><div><pre><span></span><code><span class=kn>import</span> <span class=nn>os</span> |
| 43 | +<span class=normal>19</span></pre></div></td><td class=code><div><pre><span></span><code><span class=kn>import</span><span class=w> </span><span class=nn>os</span> |
44 | 44 |
|
45 | | -<span class=kn>from</span> <span class=nn>django.core.asgi</span> <span class=kn>import</span> <span class=n>get_asgi_application</span> |
| 45 | +<span class=kn>from</span><span class=w> </span><span class=nn>django.core.asgi</span><span class=w> </span><span class=kn>import</span> <span class=n>get_asgi_application</span> |
46 | 46 |
|
47 | 47 | <span class=c1># Ensure DJANGO_SETTINGS_MODULE is set properly based on your project name!</span> |
48 | 48 | <span class=n>os</span><span class=o>.</span><span class=n>environ</span><span class=o>.</span><span class=n>setdefault</span><span class=p>(</span><span class=s2>"DJANGO_SETTINGS_MODULE"</span><span class=p>,</span> <span class=s2>"example_project.settings"</span><span class=p>)</span> |
|
51 | 51 | <span class=n>django_asgi_app</span> <span class=o>=</span> <span class=n>get_asgi_application</span><span class=p>()</span> |
52 | 52 |
|
53 | 53 |
|
54 | | -<span class=kn>from</span> <span class=nn>channels.routing</span> <span class=kn>import</span> <span class=n>ProtocolTypeRouter</span><span class=p>,</span> <span class=n>URLRouter</span> <span class=c1># noqa: E402</span> |
| 54 | +<span class=kn>from</span><span class=w> </span><span class=nn>channels.routing</span><span class=w> </span><span class=kn>import</span> <span class=n>ProtocolTypeRouter</span><span class=p>,</span> <span class=n>URLRouter</span> <span class=c1># noqa: E402</span> |
55 | 55 |
|
56 | | -<span class=kn>from</span> <span class=nn>reactpy_django</span> <span class=kn>import</span> <span class=n>REACTPY_WEBSOCKET_ROUTE</span> <span class=c1># noqa: E402</span> |
| 56 | +<span class=kn>from</span><span class=w> </span><span class=nn>reactpy_django</span><span class=w> </span><span class=kn>import</span> <span class=n>REACTPY_WEBSOCKET_ROUTE</span> <span class=c1># noqa: E402</span> |
57 | 57 |
|
58 | 58 | <span class=n>application</span> <span class=o>=</span> <span class=n>ProtocolTypeRouter</span><span class=p>({</span> |
59 | 59 | <span class=s2>"http"</span><span class=p>:</span> <span class=n>django_asgi_app</span><span class=p>,</span> |
60 | 60 | <span class=s2>"websocket"</span><span class=p>:</span> <span class=n>URLRouter</span><span class=p>([</span><span class=n>REACTPY_WEBSOCKET_ROUTE</span><span class=p>]),</span> |
61 | 61 | <span class=p>})</span> |
62 | | -</code></pre></div></td></tr></table></div> </div> </div> </div> <details class=info> <summary>Add <code class=highlight><span class=n>AuthMiddlewareStack</span></code> (Optional)</summary> <p>There are many situations where you need to access the Django <code class=highlight><span class=n>User</span></code> or <code class=highlight><span class=n>Session</span></code> objects within ReactPy components. For example, if you want to:</p> <ol> <li>Access the <code class=highlight><span class=n>User</span></code> that is currently logged in</li> <li>Access Django's <code class=highlight><span class=n>Session</span></code> object</li> <li>Login or logout the current <code class=highlight><span class=n>User</span></code></li> </ol> <p>In these situations will need to ensure you are using <code class=highlight><span class=n>AuthMiddlewareStack</span></code>.</p> <div class=highlight><pre><span></span><code><span class=kn>from</span> <span class=nn>channels.auth</span> <span class=kn>import</span> <span class=n>AuthMiddlewareStack</span> <span class=c1># noqa: E402</span> |
| 62 | +</code></pre></div></td></tr></table></div> </div> </div> </div> <details class=info> <summary>Add <code class=highlight><span class=n>AuthMiddlewareStack</span></code> (Optional)</summary> <p>There are many situations where you need to access the Django <code class=highlight><span class=n>User</span></code> or <code class=highlight><span class=n>Session</span></code> objects within ReactPy components. For example, if you want to:</p> <ol> <li>Access the <code class=highlight><span class=n>User</span></code> that is currently logged in</li> <li>Access Django's <code class=highlight><span class=n>Session</span></code> object</li> <li>Login or logout the current <code class=highlight><span class=n>User</span></code></li> </ol> <p>In these situations will need to ensure you are using <code class=highlight><span class=n>AuthMiddlewareStack</span></code>.</p> <div class=highlight><pre><span></span><code><span class=kn>from</span><span class=w> </span><span class=nn>channels.auth</span><span class=w> </span><span class=kn>import</span> <span class=n>AuthMiddlewareStack</span> <span class=c1># noqa: E402</span> |
63 | 63 |
|
64 | 64 | <span class=n>application</span> <span class=o>=</span> <span class=n>ProtocolTypeRouter</span><span class=p>({</span> |
65 | 65 | <span class=s2>"http"</span><span class=p>:</span> <span class=n>django_asgi_app</span><span class=p>,</span> |
|
71 | 71 | <span class=normal>2</span> |
72 | 72 | <span class=normal>3</span> |
73 | 73 | <span class=normal>4</span> |
74 | | -<span class=normal>5</span></pre></div></td><td class=code><div><pre><span></span><code><span class=kn>from</span> <span class=nn>reactpy</span> <span class=kn>import</span> <span class=n>component</span><span class=p>,</span> <span class=n>html</span> |
| 74 | +<span class=normal>5</span></pre></div></td><td class=code><div><pre><span></span><code><span class=kn>from</span><span class=w> </span><span class=nn>reactpy</span><span class=w> </span><span class=kn>import</span> <span class=n>component</span><span class=p>,</span> <span class=n>html</span> |
75 | 75 |
|
76 | 76 | <span class=nd>@component</span> |
77 | | -<span class=k>def</span> <span class=nf>hello_world</span><span class=p>(</span><span class=n>recipient</span><span class=p>:</span> <span class=nb>str</span><span class=p>):</span> |
| 77 | +<span class=k>def</span><span class=w> </span><span class=nf>hello_world</span><span class=p>(</span><span class=n>recipient</span><span class=p>:</span> <span class=nb>str</span><span class=p>):</span> |
78 | 78 | <span class=k>return</span> <span class=n>html</span><span class=o>.</span><span class=n>h1</span><span class=p>(</span><span class=sa>f</span><span class=s2>"Hello </span><span class=si>{</span><span class=n>recipient</span><span class=si>}</span><span class=s2>!"</span><span class=p>)</span> |
79 | 79 | </code></pre></div></td></tr></table></div> <hr> <p><font size=5><strong><code>my_app/templates/my_template.html</code></strong></font></p> <p>In your <strong>Django app</strong>'s HTML template, you can now embed your ReactPy component using the <code>component</code> template tag. Within this tag, you will need to type in the dotted path to the component.</p> <p>Additionally, you can pass in <code>args</code> and <code>kwargs</code> into your component function. After reading the code below, pay attention to how the function definition for <code>hello_world</code> (<em>from the previous example</em>) accepts a <code>recipient</code> argument.</p> <!--html-code-start--> <div class=highlight><table class=highlighttable><tr><td class=linenos><div class=linenodiv><pre><span></span><span class=normal>1</span> |
80 | 80 | <span class=normal>2</span> |
|
0 commit comments