Django неправильно URL-маршрутизации в производстве, но правильно в разработке

Наш веб-сайт развернут с помощью Django + Daphne + Nginx.

При локальном тестировании URL-маршрутизация является правильной, но в производственном режиме URL-маршрутизация является неправильной. Например, первая страница после открытия сайта - это домашняя страница. Домашняя страница функции написана в /appname/views.py. И URL-адрес должен быть / чаты. А при локальном тестировании я перенаправляюсь на 127.0.0.1/chats. Но в производственном режиме я перенаправлен на страницу mywebsite.com/appname.views.homepage и, конечно, в браузере отображается "запрошенный ресурс не найден на сервере". В функции предложение, используемое для перенаправления страницы, является перенаправлением ("appname.views.homepage"). По неправильному перенаправленному URL я думаю, что запрос успешно передан правильной функции, но часть перенаправления завершается неудачно.

Я считаю, что логика в views.py должна быть правильной, потому что маршрутизация URL при локальном тестировании является правильной. Кто-нибудь знает, что здесь может происходить?

Если нужна какая-либо другая информация, пожалуйста, дайте мне знать!

Используемые пакеты: Django 1.11.20 Daphne 1.3.0 Каналы 1.1.8 asgi-redis 1.4.3 asgiref 1.1.2

Конфигурация Nginx

server {
listen 80;

server_name mywebsite.com;
charset     utf-8;

client_max_body_size 20M;

location /static/ {
    alias /path/to/my/site/static/;

}

location / {
        proxy_pass http://0.0.0.0:8000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        proxy_redirect     off;
        proxy_set_header   Host $host;
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Host $server_name;
    }
}

/appname/urls.py

from django.conf.urls import url
from . import views
urlpatterns = [
    url(r'^$', views.homepage, name='homepage'),
]

/mainfolder/urls.py

from django.conf.urls import include, url
from django.contrib import admin
from django.conf import settings

urlpatterns = [
    url(r'^', include('appname.urls')),
    url(r'^chats/', include('appname.urls')),
]

фрагменты кода, связанные с домашней страницей функции в /appname/views.py

def home_page(request):
    if not request.user.is_authenticated():
        workerid = request.GET.get('workerId')
        hitid = request.GET.get('hitId')
        user, new =                         User.objects.get_or_create(username=workerid,first_name=hitid)
        user.set_password("mypass")
        user.save()
        user = authenticate(username=workerid,password="mypass")
        if user:
            login(request,user)
            return redirect("experiment.views.home_page")
        else:
            return render(request,'waiting_room/error.html',{"message":"could not authenticate"})
        if new:
            messages.warning(request,"Fill in Nickname")
            return render(request,'experiment/nickname.html')
        return render(request,'experiment/error.html',{"message":"problem in not authenticated"})
    myuser = request.user
    try:
        u = ExpUser.objects.get(user=myuser)
        if u.expstage in ["nickname"]:
            return redirect("experiment.views."+u.expstage)
        else:
            return render(request,'experiment/nickname.html')
    except Expuser.DoesNotExist:
        messages.warning(request,"Fill in Nickname")
        return render(request,'experiment/nickname.html')
    return render(request,'experiment/error.html',{"message":"problem in authenticated"})



def nickname(request):
    if request.user.is_authenticated():
        if request.method == "POST":
            nickname = request.POST.get('nickname')
            myuser = request.user
            s = randint(1,1000000)
            userexp = ExpUser.objects.create(user=myuser,nickname=nickname,expstage="wait_room",secret_code = s)
            consent_user = Consent_form.objects.create(user=myuser,agree='signed')
            return redirect('experiment.views.before_task')
        return render(request,'experiment/nickname.html')
    else:
        return redirect('experiment.views.home_page')

0 ответов

Другие вопросы по тегам