django 服务器错误500

xjreopfe  于 2023-06-25  发布在  Go
关注(0)|答案(2)|浏览(166)

主urls.py文件:

urlpatterns = [

    path(
        'admin/',
        admin.site.urls
    ),

    path(
        '',
        include(
            'employee.urls'
        )
    ),

    path(
        '',
        include(
            'epos.urls'
        )
    ),

    path(
        '',
        include(
            'supplier.urls'
        )
    ),

]

epos.urls:

urlpatterns = [
    path(
        '',
        home_view,
        name='home'
    ),

主页视图:

@login_required
def home_view(request):
    # Get all categories
    categories = Category.objects.all()

    # Get the first category which will be selected by default
    selected_category = categories.first()

    # Get the order_items for the selected category (first category)
    products = Product.objects.filter(
        category=selected_category.id
    )

    user = request.user

    tax = Tax.objects.latest('id')

    context = {
        'categories': categories,
        'user': user,
        'title': "EPOS",
        'products': products,
        'selected_category': selected_category,
        'tax': tax
    }

    return render(request, 'epos/epos.html', context)

测试用例:

class LoginTests(StaticLiveServerTestCase):

    fixtures = ['fixtures/employee/employee_data.json']

    def setUp(self):

        self.browser = webdriver.Chrome()
        self.browser.get(self.live_server_url)
        self.browser.maximize_window()

    def tearDown(self):
        self.browser.quit()

    def test_login_when_clocked_in(self):
        import ipdb;ipdb.set_trace()
        login_button = self.browser.find_element_by_xpath(
            '//button[normalize-space()="Login"]'
        )

        clock_in_out_button = self.browser.find_element_by_xpath(
            '//button[normalize-space()="Clock In/Out"]'
        )

        pin_input = self.browser.find_element_by_id(
            'pin'
        )

        pin_code = 'some pin'
        employee_name = 'some name'

        pin_input.send_keys(pin_code)
        
        clock_in_out_button.click()

        time.sleep(10)
        login_button.click()

settings.py

ROOT_URLCONF = 'allPOS.urls'
LOGIN_URL = '/login/'

当测试登录时,我被重定向到主网页,该网页是localhost:46497/,但不是页面,我得到服务器错误500。此错误仅在测试时发生。另外,如果我添加另一个路径,例如localhost:46497/analytics它按预期打开网页。
任何帮助将不胜感激。

fcy6dtqo

fcy6dtqo1#

经过4个小时的调试,我发现问题与数据库为空有关。
我想要渲染的网页希望传递一些模型,由于DB是空的,这些模型没有传递,因此崩溃。在正常情况下(./manage.py runserver),如果DEBUG=True,它会告诉你什么是错误的,但出于某种原因,StaticLiveServerTestCase没有这个选项,或者至少我不知道它。如果有人知道如何为StaticLiveServerTestCase启用一些调试器,请随时添加到这个线程。
所以我做了:./manage.py dumpdata order.tax > data.json-我将需要的数据转储到json文件中,在TestCase的开头,我将这些数据添加到fixture中。
希望这对有同样问题的人有帮助!

thtygnil

thtygnil2#

我也有同样的问题。但它是用分页的。我在分页中使用:“页面范围=分页器.get_elided_page_range(number=分页器.num_pages // 2,on_each_side=3,on_ends=2)”
我的解决方案:

data_list = Data.objects.all()
paginator = Paginator(data_list, per_page=PAGINATOR_QTY)
page_numer = request.GET.get('page', 1)
page_range = []
if len(data_list) > PAGINATOR_QTY:
    page_range = paginator.get_elided_page_range(number=paginator.num_pages // 2, on_each_side=3, on_ends=2)
try:
    data_ = paginator.page(page_numer)
except PageNotAnInteger:
    data_ = paginator.page(1)
except EmptyPage:
    data_ = paginator.page(paginator.num_pages)

return render(request,
              'cmc/cmc/index.html',
              {'data': data_,
              'page_range': page_range})

相关问题