/django_htmx_tailwind

Crear app de Django y usarlo con tailwind ccs

Primary LanguagePython

primero creamos una carpeta con el nombre del proyecto

luego instalo un entorno virtual atraves del comando

virtualenv -p python3 env

y lo activamos

./env/scripts/activate

luego instalamos Django

pip install django

e iniciamos un nuevo proyecto

django-admin startproject django_tailwind_htmx

nos metemos en la carpeta del proyecto

cd django_tailwind_htmx

iniciamos una nueva app llamada core

python manage.py startapp core

inicialisamos el git

git init

nos metemos a www.gitignore.io seleccionamos django y creamos el archvio para pegarlo en el archivo .gitignore

iniciamos la instalacion via npm de tailwind

npm install -D tailwindcss postcss postcss-cli autoprefixer

ya que acavo la instalacion lo inicialisamos con

npx tailwindcss init

ahroa abrimos el proyecto en viual studio

code .

y dentro en el archivo tailwind.config.js ponemos esto para indicarle que todo lo html dentro de la carpeta de core usara tailwind

module.exports = {

 content: ['./core/templates/core/*.html'],

 theme: {

 extend: {},

 },

 plugins: [],

}

luego creamos un archivo llamado postcss.config.js y le ponemos esto

module.exports = {

 plugins: {

 tailwindcss: {},

 autoprefixer: {}

 }

}

luego creamos en la carpeta raiz el archivo "static/css/main.css" y dentro del el ponemos lo siguiente:

@tailwind base;

@tailwind components;

@tailwind utilities;

luego en el archivo package.json agregamos el siguiente script

"scripts": {

 "build": "postcss static/css/main.css -o static/css/main.main.css"

 }

ya con esto configurado corremos el comando en la terminal

npm run build

esto creara un archivo llamado main.main.css en la carpeta especidicada arriba en el script ("static\css")

y nos saldra algo asi, ya que no tenemos creado ningun template

Pasted image 20220607200327

luego en /core/views.py agregamos una vista para poder usar index.html

from urllib import request

from django.shortcuts import render

  

def index(reques):

 return render(request, 'core/index.html')

hecho esto ahora devemos reflejarlo en en "django_tailwind_htmx/urls.py" agregandolo en los "path"

from django.contrib import admin

from django.urls import path

  

from core.views import index

  

urlpatterns = [

 path('', index, name='index'),

 path('admin/', admin.site.urls),

]

ahora en sjango_tailwind_htmx/settings.py declaramos en INSTALLED_APPS nuestra aplicacion 'core', asi

Pasted image 20220607213331

corremos el servidor python manage.py runserver

nos aparecera un error ya que no tenemos el template creado de index.html, asi que lo creamos en "core/templates/core/index.html"

Pasted image 20220607213839

ahora en ese archivo creamos un documento html normalito solo agregando tambien {% load static %} al principio del documento y en <head> ponerlo siguiente para mandar a llamar el ccs

<link rel="stylesheet" href="{% static 'css/main.min.css' %}">

Pasted image 20220607214350

ya agregado esto ahora si podemos parar el servidor y volver a correr el comando npm run build

(aqui esta al final agregado el color azul) Pasted image 20220607215313

ya creado nuevamente el css de solo lo que ocupamos y volvemops a iniciar el servidor

Pasted image 20220607215018

ahora solo tenemos que ir a django_tailwind_htmx/settings.py y en la parte de abajo declarar que durectorio de 'static' vamos a usar

STATICFILES_DIRS = [

    BASE_DIR / 'static'

]

salvamos y ahora si recragamos el indice y podemos ver que ya toma todo el CSS en la consola de Chrome

Pasted image 20220608142836

ahora instalaremos el srript watch para que cda que modifiquemos el archivo index.html se reescriba automaticamente el css,

y en el archivo package.json añadimos este script

{

  "watch": {

    "build": ["core/templates/core/*.html"]

  },

  "scripts": {

    "build": "postcss static/css/main.css -o static/css/main.min.css",

    "watch": "npm-watch"

  },

  "devDependencies": {

    "autoprefixer": "^10.4.7",

    "postcss": "^8.4.14",

    "postcss-cli": "^9.1.0",

    "tailwindcss": "^3.0.24"

  },

  "dependencies": {

    "npm-watch": "^0.11.0"

  }

}

luego lo ejecutamos en la consola el siguiente comando npm install npm-watch Pasted image 20220608164340

y en la terminal donde estamos corriendo el runserver la dividimos y corremos el script con el comando npm run watch Pasted image 20220608165116

ahora podemos ir al archivo index.html y modificar el ccs a rojo Pasted image 20220608170714

y al actualizar la pagina nos dara como resultado que se cambio a rojo automaticamente

Pasted image 20220608170517

ahora instalamos el siguiente comando en la terminal npm install htmx.org y actualizamos el script de 'build' y 'watch' en /package.json para que queden de la siguiente manera

  "scripts": {

    "prebuild": "postcss static/css/main.css -o static/css/main.min.css",

    "build": "copy \"node_modules\\htmx.org\\dist\\htmx.min.js\" \"C:\\Users\\folkh\\Desktop\\Proyectos\\Django Htmx and Tailwind\\django_tailwind_htmx\\static\\js\\\"",

    "watch": "npm-watch"

  },

ahora en una terminal aparte dejamos corriendo el comando python manage.py runserver y en otra el comando npm run watch para que quede escuchando a la espera de cualquier cambio en el CSS y o JS

Pasted image 20220609155718

si hacemos cualquier cambio en el index automaticamente lo agregara a nuestros archivos de css y js

aqui añadimos varios colores de tailwind y al momento de guardar corre automaticamente el script 'build' Pasted image 20220609155929

Pasted image 20220609160023

por ultimo agregamos un script para que nos muestre el la interfas de administrador al dar click con las siguientes lineas en index.html

<div hx-get="/admin/" hx-swap="outerHTML">ADMIN</div>

<script src="{% static 'js/htmx.min.js' %}"></script>

de la misma forma al guardarlo nos agregara el js al archivo htmx.min.js al que apuntamos mediante el script

Pasted image 20220609160550

Y listo, eso fue todo