Fase 2 (isla): formulario de registro en React/TSX
register_view ya devolvía JSON en POST, así que sin cambio de backend:
RegisterForm.tsx replica register.js (password/conf con mostrar-ocultar, email/conf,
reclutador opcional, checkbox de términos que habilita el botón) y hace fetch
form-urlencoded + CSRF a {% url 'register' %}. El mensaje de éxito llega como HTML
(dangerouslySetInnerHTML); los de error como texto en rojo.
- partials/register.html: el <form> + register.js se sustituyen por #register-app
(data-csrf/data-register-url) + {% vite_asset %}. Info-box y rama "ya conectado"
siguen en Django.
- Nueva entry 'register' en vite.config.ts.
Verificado: check OK, la página monta la isla, POST con datos inválidos devuelve
el JSON de validación correcto.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -54,48 +54,13 @@
|
||||
|
||||
<div class="box-content">
|
||||
<div class="body-box-content centered">
|
||||
<form action="" method="POST" id="nw-create-form" accept-charset="utf-8">
|
||||
{% csrf_token %}
|
||||
<table class="middle-center-table">
|
||||
<script src="{{ URL_PRINCIPAL }}/static/nw-themes/nw-ryu/nw-js-handlers/register.js"></script>
|
||||
<tbody><tr>
|
||||
<td><input type="password" maxlength="16" name="password" id="password" placeholder="Contraseña">
|
||||
<span class="far fa-eye toggle-password"></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><input type="password" maxlength="16" name="conf-password" id="conf-password" placeholder="Confirmar contraseña">
|
||||
<span class="far fa-eye toggle-password-conf"></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><input type="email" name="email" id="email" placeholder="Correo electrónico de Gmail"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><input type="email" name="conf-email" id="conf-email" placeholder="Confirmar correo electrónico"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><hr></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Opcional: Sólo si eres reclutado por un amigo</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><input type="text" maxlength="12" name="recruiter" id="recruiter" placeholder="Reclutante"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<input type="checkbox" onclick="click_checkbox()" id="accept-terms-cookies" class="terms-check" name="accept-terms-cookies">
|
||||
<label for="vehicle1"> Acepto las <a href="https://foro.novawow.com/forum/novawow/normas-de-la-comunidad/16502-normas-del-juego" target="_blank" rel="noopener noreferrer">Normas</a>, <a href="terms-and-conditions" target="_blank">Términos y Condiciones</a> y la <a href="privacy-policy" target="_blank">Política de Privacidad</a></label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><button type="submit" name="create" class="create-button" data-id="CrearCuenta" id="create-account-btn" disabled="true">Crear cuenta</button></td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
</form>
|
||||
<hr>
|
||||
<div class="alert-message" id="create-response"></div>
|
||||
{% load django_vite %}
|
||||
<!-- Isla React (Vite): formulario de creación de cuenta. POST a
|
||||
{% url 'register' %} (que ya devuelve JSON) con CSRF. -->
|
||||
<div id="register-app"
|
||||
data-csrf="{{ csrf_token }}"
|
||||
data-register-url="{% url 'register' %}"></div>
|
||||
{% vite_asset 'src/entries/register.tsx' %}
|
||||
<br>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user