En primer lugar, los dos cuadro rojo siguiente de copias de html en el lugar correspondiente del nuevo proyecto, asegúrese de colocar el mismo que (archivos HTML específicos, guardar archivos en mi columna del blog en el jardín),
html archivo, aparece similar a {% url "tienda: login" %} lugar, recuerde, la tienda de aplicaciones para ser reemplazado en el nombre del proyecto actual.
Dos, la configuración fija como sigue.
compras: Representación product_list después de una conexión exitosa, salto a qué camino ( 'product_list /') dirección url.
compras: entrada que representa la pista de aterrizaje ( '/ login') direcciones URL.
Tres, siempre de acuerdo con el código de abajo base.html
{% De carga estática%} <! DOCTYPE html> <html lang = "es"> <head> <meta charset = "UTF-8"> <title> {% block title%} {% endblock%} </ title> <link href = "{/ base.css "css% rel = "stylesheet" % estática"}"> </ head> <body> <div id = "header"> <a href = "/" class = "logo "> Mi tienda </a> </ div> {% if%} request.user.is_authenticated <div id =" "style = "margin-left subtítulo: 20px"> <div class = "carrito"> Su cesta está vacío. </ div> </ div> {% endif%} <div style = "margin-right: 20px"> {% if%} request.user.is_authenticated Hola {{}} request.user.first_name, <a href="{% url "shop:password_change" %}">修改密码</a> <a href = "{ % URL "tienda: cierre de sesión" %} "> Salir </a> {% else%} <a href="{% url "shop:login" %}"> Log-in </a> {% endif%} </ div> <div id = "contenido"> {% de contenido de bloque%} {% endblock%} </ div> </ body> </ html>
En cuarto lugar, en la parte inferior del archivo en forms.py, pegue el siguiente código:
de django formas de importación de usuario django.contrib.auth.models importación LoginForm clase (forms.Form): nombre de usuario = forms.CharField () password = forms.CharField (Widget = forms.PasswordInput) UserRegistrationForm clase (forms.ModelForm): contraseña = forms.CharField (label = 'contraseña', widget de = forms.PasswordInput) password2 = forms.CharField (label = 'Repeat password', widget de = forms.PasswordInput) clase Meta: modelo = usuario campos = ( 'nombre de usuario', ' nombre', 'email') def clean_password2 (auto): cd = self.cleaned_data si cd [ 'password'] = CD! [ 'password2']: formas subida.ValidationError ( 'contraseña, don \' t partido. ') retorno cd [ 'password2']
En quinto lugar, en urls.py archivo a continuación, pegue el siguiente código:
de ruta django.urls importación de vistas django.contrib.auth importación como auth_views de. vistas de importación APP_NAME 'Comprar' = urlpatterns = [ ruta ( 'login /', auth_views.LoginView.as_view (), el nombre = 'login'), ruta ( 'Salir /', auth_views.LogoutView.as_view (), name =' Salir '), ruta ('', views.product_list, name = 'product_list'), # cambiar las URL de contraseñas ruta ( 'password_change /', auth_views.PasswordChangeView.as_view ( template_name = 'tienda / password_change_form.html', success_url =" / password_change / hecho /", ), name = 'password_change'), ruta de acceso (' auth_views.PasswordChangeDoneView.as_view ( template_name = 'tienda / password_change_done.html' ), name = 'password_change_done'), # Restablecer URL contraseña ruta ( 'restablecimiento de contraseña /', auth_views.PasswordResetView.as_view ( template_name = "tienda / password_reset_form. html", email_template_name = "tienda / password_reset_email.html", subject_template_name = "tienda / password_reset_subject.txt", success_url = "/ restablecimiento de contraseña-hecho /", ), name = 'password_reset'), ruta ( 'restablecimiento de contraseña -done /', auth_views.PasswordResetDoneView.as_view ( template_name = "tienda / password_reset_done.html" ), name = 'password_reset_done'), ruta ( 'restablecimiento de contraseña a confirmar / <uidb64> / <token> /', auth_views.PasswordResetConfirmView.as_view ( template_name = "tienda / password_reset_confirm. html", success_url = "/ restablecimiento de contraseña-completa /", ), name = 'password_reset_confirm'), ruta ( 'password-reset-completa /', auth_views.PasswordResetCompleteView.as_view ( template_name = "tienda / password_reset_complete.html" ), name = 'password_reset_complete'), trayectoria ( 'registro /', views.register, name = 'registro'), ]
En sexto lugar, bajo el expediente views.py, pegue el siguiente código:
Importar los django.shortcuts render de, get_object_or_404 de la categoría .models importación, producto de importación cart.forms CartAddProductForm de django.contrib.auth.decorators importación login_required de .forms importación UserRegistrationForm DEF Registro (Request): SI request.method == 'el POST ': user_form = UserRegistrationForm (request.POST) SI user_form.is_valid (): # crear un nuevo objeto de usuario, pero evite para guardarlo new_user = user_form.save (el commit = False) # settings contraseña seleccionada new_user.set_password (user_form .cleaned_data [ 'password']) # Guardar el objeto de usuario new_user.save () volver render (solicitud, 'tienda / register_done.html', { 'new_user': new_user}) más: user_form = UserRegistrationForm () de retorno render (solicitud, 'tienda / register.html', { 'user_form': user_form}) @ login_required def product_list (request, category_slug = None): # ......... @login_required def product_detail (solicitud, ID, babosa): # ........