Movatterモバイル変換


[0]ホーム

URL:


TW Elements Django integration

This article shows you how to integrate Django application with TW Elements. Free download, open source license.


Prerequisites

Before starting the project make sure to install the following utilities:


Creating a new Django application

Let's create a fresh Django application so that we can go through all the steps together.

Step 1

Add Python virtual environment.

                mkdir my-project    cd my-project    py -3 -m venv venv
                mkdir my-project    cd my-project    python -3 -m venv venv

Step 2

Now activate created environment. After this you should see venv catalogue and in your terminal will be visible(venv) badge.

                venv/Scripts/activate
                source venv/bin/activate

Step 3

Install Django.

                pip install django

Step 4

Createsrc folder in the root directory and there initialize Django project.

                mkdir src    cd src    django-admin startproject mysite .

Step 5

Create a folder calledstatic in thesrc directory. You can place your own CSS files there. Let's create there a file namedinput.css. There you can put your own CSS styles.

Step 6

Navigate to thesettings.py in themysite folder and update the section with paths for static files.

                    STATIC_URL = 'static/'    STATICFILES_DIRS = [      BASE_DIR / "static"    ]    STATIC_ROOT = BASE_DIR.parent / "static"

Step 7

Create a folder namedtemplates in thesrc directory. Then, open thesettings.py file in themysite folder and update the section with the template paths.

                    TEMPLATES = [        {            ...            'DIRS': [BASE_DIR / 'templates'],            ...        },    ]

Step 8

Create a file namedbase.html in thetemplates directory. This file will be a base for all other pages. Additionally, within this folder, create new namedpages, and inside it, create a file namedhome.html.

                    {% load static %}    <!DOCTYPE html>    <html lang="en">      <head>        <meta charset="UTF-8" />        <meta name="viewport" content="width=device-width, initial-scale=1.0" />        <link href="{% static 'input.css' %}" rel="stylesheet" />        <title>          {% block head_title %}TWE Django Integration Tutorial{% endblock %}        </title>      </head>      <body>        <div>{% block content %} {% endblock %}</div>      </body>    </html>
                {% extends "base.html" %} {% block content %}    <h1>Django application</h1>    {% endblock %}

Step 9

Createviews.py file inmysite folder and put in there render for your home page.

                from django.shortcuts import render    def home_view(request):      return render(request, "pages/home.html", {})

Step 10

Then inurls.py file (also located inmysite folder) add import newly createdviews.py file and attach urls for paths with static files.

                from django.contrib import admin    from django.urls import path    from django.conf import settings    from . import views        urlpatterns = [        path('admin/', admin.site.urls),        path('', views.home_view, name='home')    ]        if settings.DEBUG:        from django.conf.urls.static import static        urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

Step 11

To see if everything works, run the server:

                    python manage.py runserver

Installing and configuring Tailwind CSS and TW Elements

Step 1

To initialize an npm project, run the following command in theroot directory:

                npm init -y

Step 2

Install Tailwind CSS.

                npm install -D tailwindcss postcss autoprefixer    npx tailwindcss init -p

File structure

If you have followed all instructions mentioned earlier, your file structure should look like this:

          my-project/          ├── node_modules/          ├── src/                  │   ├── mysite/          │   │   ├── ...          │   │   ├── settings.py          │   │   ├── urls.py          │   │   ├── views.py          │   │   └── ...          │   ├── static/          │   |   └── input.css          │   ├── templates/          │   |   ├── pages/          │   |   |   └── home.html          │   |   └── base.html          │   └── manage.py          ├── venv/          ├── package-lock.json          ├── package.json          ├── postcss.config.js          └── tailwind.config.js

Step 3

Add the paths to all of your template files in yourtailwind.config.js file.

                /** @type {import('tailwindcss').Config} */    module.exports = {      content: [        "./src/**/*.{html,js}",        "./node_modules/tw-elements/js/**/*.js",      ],      theme: {        extend: {},      },      darkMode: "class",      plugins: [require("tw-elements/plugin.cjs")],    };

Step 4

Replace your own styles ininput.css file with Tailwind directives.

                @import url("https://fonts.googleapis.com/css?family=Roboto:300,400,500,700,900&display=swap");    @tailwind base;        @layer base {      html {        @apply text-surface;        @apply bg-white;      }      html.dark {        @apply text-neutral-50;        @apply bg-body-dark;      }    }        @tailwind components;    @tailwind utilities;        p {      @apply leading-[1.6];    }

Step 5

Install TW Elements.

                npm install tw-elements

Step 6

Go tosettings.py file and update section with paths for static files.

                    ...    STATICFILES_DIRS = [      BASE_DIR / "static",      BASE_DIR.parent / "node_modules",    ]     ...

Step 7

In thehead section of thebase.html file, substitute thehref attribute frominput.css to the Tailwind CSS file namedoutput.css, which will be generated during the Tailwind CLI build process. Furthermore, add a link to the TW Elements JS at the end of thebody tag.

                ...    <head>      ...      <link href="{% static 'output.css' %}" rel="stylesheet" />      ...    </head>    <body>      ...      <script        src="{% static 'tw-elements/dist/js/tw-elements.umd.min.js' %}"        type="text/javascript"></script>    </body>    ...

Step 8

Add the TWE components you intend to use in your project.

                    {% extends "base.html" %} {% block content %}    <div class="mt-16 flex justify-center">      <p class="text-lg">        Hover the link to see the        <a          href="#"          class="text-primary transition duration-150 ease-in-out hover:text-primary-600 focus:text-primary-600 active:text-primary-700 dark:text-primary-400 dark:hover:text-primary-500 dark:focus:text-primary-500 dark:active:text-primary-600"          data-twe-toggle="tooltip"          title="Hi! I'm tooltip"          >tooltip</a        >      </p>    </div>    {% endblock %}

Step 9

Start the Tailwind CLI build process. Run the CLI tool to scan your template files for classes and build your CSS.

                npx tailwindcss -i src/static/input.css -o src/static/output.css --watch

And run the local server. If changes doesn't apply, try hard reload. Awesome! You're all set to dive into using TW Elements for your Django project. Have fun!

                python manage.py runserver

Initializing via JS

By default all components have autoinit which means they are initialized by data attributes. But if you want to make init by JavaScript - there is also possibility to do that.

Step 1

Initialize components which are you intend to use.

                {% extends "base.html" %} {% block content %}    <div class="mt-16 flex justify-center">      <p class="text-lg">        Hover the link to see the        <a          id="tooltip"          href="#"          class="text-primary transition duration-150 ease-in-out hover:text-primary-600 focus:text-primary-600 active:text-primary-700 dark:text-primary-400 dark:hover:text-primary-500 dark:focus:text-primary-500 dark:active:text-primary-600"          title="Hi! I'm tooltip"          >tooltip</a        >      </p>    </div>    <script type="module">      const myTooltip = new twe.Tooltip(document.getElementById("tooltip"));    </script>    {% endblock %}

Related resources

Tutorials:

Integrations :


[8]ページ先頭

©2009-2025 Movatter.jp