Django неверный формат views.py или urls.py (приложение-редактор) - PullRequest
0 голосов
/ 06 августа 2020

Я пытаюсь написать веб-приложение, которое принимает входные данные посетителя веб-сайта, который представляет собой номер членской карты 12 di git «Chuckee Cheese», а затем редактирует первые 8 цифр и представляет отредактированный номер. У меня есть написанный шаблон и базовый c logi c внутри моего приложения views.py. Проблема в том, что после того, как пользователь вводит номер своей карты, Django не обрабатывает ввод пользователя должным образом. Например, отредактированный номер не отображается и не отображается в шаблоне, как задумано.

Вот pi c на imgur, показывающий, что мой веб-сайт сейчас работает на моем dev-сервере . Как вы можете видеть в этом pi c, в строке веб-адреса Django получает запрос GET ccEntry с «123456789102» в качестве ввода пользователя. Так что я думаю, что это работает. Но под двумя элементами h1 (салатовый), Django должен отображать номер карты «123456789102», а также номер отредактированной карты «xxxx xxxx 9102», но вместо этого он пуст. Что здесь не так? Насколько я могу судить, я считаю, что проблема связана либо с первыми двумя функциями внутри моего redactors views.py, либо с тем, как устроен urls.py моего приложения.

Вот мой views.py :

from django.shortcuts import render

# Create your views here.
def redactors(request):
   return render(request, 'alls/landings.html')

def home(request):
   if 'ccEntry' in request.GET:
       number = request.GET['ccEntry']
       redacted_num = 'xxxx xxxx {}'.format(number[-4:])
       return render(request, 'alls/landings.html', {'number':number, 'redacted_num':redacted_num})
   else:
       return render(request, 'alls/landings.html')

def results(request):
    return render(request, 'alls/landings.html')

Вот мое приложение urls.py :

from django.urls import path, include
from . import views
 
 
urlpatterns = [
   path('home', views.home, name='home'),
   path('results', views.results, name='results'),
]

Те это два сценария, в которых, как я считаю, проблема.

Что бы это ни стоило, вот некоторые другие связанные файлы конфигурации и скрипты, которые используются:

Слегка сокращено все / лендинги. html шаблон:

{% load static %}
 
<!doctype html>
 
<html lang="en">
<head>
 <meta charset="utf-8">
 <meta name="description" content="The HTML5 Herald">
 <meta name="robots" content="noindex,nofollow" />
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <!-- Custom -->
 <link rel="stylesheet" href="{% static 'css/style.css' %}">
 
</head>
  
<body>
  
 {% block content %}   
  
   <div class="card-processor">
   <h3>Enter your fake Chuckee Cheese Neptune membership card number!</h3>
   <form action="{% url 'posts' %}" method="get">
     <div> 
       <label for="password">Enter Card Number:</label>
       <input type="text" id="password" name="ccEntry" pattern="[0-9]{12}" maxlength="12"/>
       <div class="requirements">Must be a 12 digit number and no letters. </div>
       <input type="submit" value="Redact!" class="button"/>
     </div>
   </form>
  
   <h1>Here is your fake Chuckee Cheese Neptune memnership card number!</h1>
   <h3 style="color:lime">This was the original number that you entered:</h3>
   <div class="field">{{ number }}</div>
   <h3 style="color:lime">Here it is redacted:</h3>
   <div class="field">{{ redacted_num }}</div>    
   <a href="{% url 'posts' %}"><div class="field"><strong>Again? Click here!</strong></div></a>
  
 </div> <!--- END card-processor -->
 
 <div class="post-content">
 {% for post in posts %}
   <h1> Blog post title: <em>{{ post.title }}</strong></em>
   <h4>Publication Date: {{ post.pub_date_preference }}</h4>
   <img src="{{ post.image.url }}" class="authors-pic" style="" />
    
   <!-- Body text should go here :   -->
  
   <p>{{ post.body|safe }}</p>
 {% endfor %}
 
 
{% endblock %}
 
 </body>
 
</html>

Родитель urls.py роутер:

from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static
 
urlpatterns = [
   path('admin/', admin.site.urls),
   path('', include('posts.urls')),
   path('', include('redactors.urls')),
   path('', include('counters.urls')),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

Я считаю, что это все соответствующие файлы в игре. Однако, если проблема в другом месте, если вы хотите увидеть остальную часть моего исходного кода, вот снимок состояния c с тегом v.0.7.0 на моем GitHub .

Также стоит отметить, что я не получаю обратного отслеживания, и мой сервер не дает сбоев, поэтому у меня не так много потенциальных клиентов с точки зрения поиска в Google других разработчиков, решающих аналогичные или связанные проблемы.

1 Ответ

1 голос
/ 06 августа 2020

Похоже, что « форма » в лендингах. html отправляется по пути с именем « сообщений", Но в вашем приложении нет пути с таким именем в urls.py .

Используйте этот <form action="{% url 'home' %}" method="get"> вместо <form action="{% url 'posts' %}" method="get">.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...