django charField не принимает номера - PullRequest
0 голосов
/ 14 апреля 2020

Я новичок в django, и я тестировал CURD, и он работал правильно, пока я не нашел что-то странное

У меня есть charfield, который не принимает никаких чисел и показывает ошибку, когда я получаю все записи

Reverse for 'updateUser' with arguments '('uuu1',)' not found. 1 pattern(s) tried

views.py

def signup(request):
    form = UserForm()
    if request.method == 'POST':
        #     fullname = request.POST['fullname']
        form = UserForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('/')
        else:
            form = UserForm(request.POST)
    else:
        form = UserForm(request.POST)
        context = {'form': form}
    return render(request, 'singup.html', context)


def updateUser(request, fullname):
    user = User.objects.get(fullname__icontains=fullname)
    form = UserForm(instance=user)
    if request.method == 'POST':
        form = UserForm(request.POST, instance=user)
        if form.is_valid():
            form.save()
            return redirect('/')
    context = {'form': form}
    return render(request, 'singup.html', context)


def getAllUsers(request):
    print("getAllUsers")
    thesearchValue = ''
    if 'SearchValue' in request.GET:
        thesearchValue = request.GET['SearchValue']
        print(thesearchValue)
        print(request.GET['SearchValue'])
        allUsers = User.objects.filter(fullname__icontains=thesearchValue)  # all()
        # return render(request,'getUsersInfo.html',{'allUsers':allUsers})
        return render(request, 'getUsersInfo.html', {'allUsers': allUsers})
    else:
        print("Empty")
        allUsers = User.objects.all()
        return render(request, 'getUsersInfo.html', {'allUsers': allUsers})


def deleteUser(request, fullname):
    print('delete the user')
    todelete = User.objects.filter(fullname=fullname)
    todelete.delete()
    return redirect(getAllUsers)

Шаблон

<form method="GET">
    {% csrf_token %}
<div class="input-group">
    <input type="text" class="form-control" placeholder="Search this blog" name="SearchValue">
    <div class="input-group-append">
      <button class="btn btn-secondary" type="button">
        <i class="fa fa-search"></i>
      </button>
    </div>
  </div>
</form>
<table class="table table-bordered">
    <thead>
        <tr>
            <th>Name</th>
            <th>Department</th>
            <th>Phone</th>
            <th>Actions</th>
            <th>Actions</th>
        </tr>
    </thead>
    <tbody>
        {% for x in allUsers%}
        <tr>
            <td>{{x.fullname}}</td>
            <td>{{x.email}}</td>
            <td>{{x.Resp}}</td>
            <td>
                <form method="GET" action="{% url 'updateUser' x.fullname %}">
                    <button class="btn btn--radius btn--green" type="submit"><img src="{% static 'img/update.png' %} "></button>
                </form>
            </td>
            <td>
                <form method="GET" action="{% url 'deleteUser' x.fullname %}">
                    <button class="btn btn--radius btn--green" type="submit"><img src="{% static   'img/delete (2).png' %} "></button>
                </form>                </td> 
        </tr>
        {% endfor %}

Urls.py

urlpatterns = [
path('signup.html',views.signup,name=''),
path('getUsersInfo.html',views.getAllUsers,name=''),
url(r'^deleteUser/(?P<fullname>\D+)/$',views.deleteUser, name='deleteUser'),
url(r'^updateUser/(?P<fullname>\D+)/$',views.updateUser, name='updateUser'),

]

обратите внимание, что Я отправляю полное имя в качестве аргумента в функции обновления и удаления, но даже это не должно быть проблемой.

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

Ответы [ 2 ]

0 голосов
/ 16 апреля 2020

я обнаружил, что проблема в моем URL

Пол предлагает пропустить сам объект без регулярных выражений, и когда я попытался, я использовал URL, как показано ниже

    url(r'^updateUser/<str:fullname>/$',views.updateUser, name='updateUser'),

, и кажется, что вы можно использовать только путь с объектами

    path(r'^updateUser/<str:fullname>/$',views.updateUser, name='updateUser'),

, теперь он работает нормально

0 голосов
/ 15 апреля 2020

В вашем регулярном выражении \ D + означает "одно или несколько не чисел", см. https://www3.ntu.edu.sg/home/ehchua/programming/howto/Regexe.html#zz -2 . Я бы порекомендовал использовать только

'updateUser/<str:fullname>/'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...